Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2010 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.guvnor.client.widgets.tables;
 
 import java.util.List;
 
 
 public class ColumnPicker<T> {
 
     private final Image                      COLUMN_PICKER_IMAGE   = new Image..columnPicker() );
 
     private final CellTable<T>               cellTable;
     private List<ColumnMeta<T>>              columnMetaList        = new ArrayList<ColumnMeta<T>>();
 
     public ColumnPicker(CellTable<T> cellTable) {
         this. = cellTable;
     }
 
     public void addColumn(Column<T, ? > column,
                           Header<Stringheader,
                           boolean visible) {
         addColumnnew ColumnMeta<T>( column,
                                       header,
                                       visible ) );
     }
 
     private void addColumn(ColumnMeta<T> columnMeta) {
         .addcolumnMeta );
         if ( columnMeta.isVisible() ) {
             .addColumncolumnMeta.getColumn(),
                                  columnMeta.getHeader() );
         }
     }
 
     public ToggleButton createToggleButton() {
         final ToggleButton button = new ToggleButton );
         final PopupPanel popup = new PopupPaneltrue );
         popup.addAutoHidePartnerbutton.getElement() );
         popup.addCloseHandlernew CloseHandler<PopupPanel>() {
             public void onClose(CloseEvent<PopupPanelpopupPanelCloseEvent) {
                 button.setDownfalse );
             }
         } );
         VerticalPanel popupContent = new VerticalPanel();
         for ( final ColumnMeta<T> columnMeta :  ) {
             final CheckBox checkBox = new CheckBoxcolumnMeta.getHeader().getValue() );
             checkBox.setValuecolumnMeta.isVisible() );
             checkBox.addValueChangeHandlernew ValueChangeHandler<Boolean>() {
                 public void onValueChange(ValueChangeEvent<BooleanbooleanValueChangeEvent) {
                     boolean visible = booleanValueChangeEvent.getValue();
                     if ( visible ) {
                         // WORKAROUND because CellTable does not support insertColumn at this time
                         for ( ColumnMeta<T> resettingColumnMeta :  ) {
                             if ( resettingColumnMeta.isVisible() ) {
                                 .removeColumnresettingColumnMeta.getColumn() );
                             }
                         }
                         columnMeta.setVisiblevisible );
                         for ( ColumnMeta<T> resettingColumnMeta :  ) {
                             if ( resettingColumnMeta.isVisible() ) {
                                 .addColumnresettingColumnMeta.getColumn(),
                                                      resettingColumnMeta.getHeader() );
                             }
                         }
                     } else {
                         columnMeta.setVisiblevisible );
                         .removeColumncolumnMeta.getColumn() );
                     }
                 }
            } );
            popupContent.addcheckBox );
        }
        popup.addpopupContent );
        button.addClickHandlernew ClickHandler() {
            public void onClick(ClickEvent event) {
                if ( button.isDown() ) {
                    popup.setPopupPositionbutton.getAbsoluteLeft(),
                                            button.getAbsoluteTop() + button.getOffsetHeight() );
                    popup.show();
                } else {
                    popup.hide(false);
                }
            }
        } );
        return button;
    }
    private static class ColumnMeta<T> {
        private Column<T, ? >  column;
        private Header<Stringheader;
        private boolean        visible;
        private ColumnMeta(Column<T, ? > column,
                           Header<Stringheader,
                           boolean visible) {
            this. = column;
            this. = header;
            this. = visible;
        }
        public Column<T, ? > getColumn() {
            return ;
        }
        public Header<StringgetHeader() {
            return ;
        }
        public boolean isVisible() {
            return ;
        }
        public void setVisible(boolean visible) {
            this. = visible;
        }
    }
New to GrepCode? Check out our FAQ X