Coverage Report - org.kuali.student.common.ui.client.widgets.KSDialog
 
Classes in this File Line Coverage Branch Coverage Complexity
KSDialog
0%
0/76
0%
0/20
1.556
KSDialog$1
0%
0/3
N/A
1.556
KSDialog$2
0%
0/5
N/A
1.556
KSDialog$KSDialogResizeHandler
0%
0/3
N/A
1.556
KSDialog$KSDialogResizeHandler$1
0%
0/3
N/A
1.556
 
 1  
 package org.kuali.student.common.ui.client.widgets;
 2  
 
 3  
 import com.google.gwt.dom.client.NativeEvent;
 4  
 import com.google.gwt.event.dom.client.ClickEvent;
 5  
 import com.google.gwt.event.dom.client.ClickHandler;
 6  
 import com.google.gwt.event.dom.client.KeyCodes;
 7  
 import com.google.gwt.event.logical.shared.ResizeEvent;
 8  
 import com.google.gwt.event.logical.shared.ResizeHandler;
 9  
 import com.google.gwt.event.shared.GwtEvent;
 10  
 import com.google.gwt.event.shared.HandlerManager;
 11  
 import com.google.gwt.event.shared.HandlerRegistration;
 12  
 import com.google.gwt.user.client.Command;
 13  
 import com.google.gwt.user.client.DeferredCommand;
 14  
 import com.google.gwt.user.client.Window;
 15  
 import com.google.gwt.user.client.Event.NativePreviewEvent;
 16  
 import com.google.gwt.user.client.ui.Anchor;
 17  
 import com.google.gwt.user.client.ui.DialogBox;
 18  
 import com.google.gwt.user.client.ui.FlexTable;
 19  
 import com.google.gwt.user.client.ui.FlowPanel;
 20  
 import com.google.gwt.user.client.ui.HorizontalPanel;
 21  
 import com.google.gwt.user.client.ui.ScrollPanel;
 22  
 import com.google.gwt.user.client.ui.Widget;
 23  
 
 24  
 
 25  0
 public class KSDialog extends DialogBox  {
 26  
 
 27  0
     private final HandlerManager handlers = new HandlerManager(this);
 28  0
     private int maxWidth = 800;
 29  0
     private int maxHeight = 0;
 30  0
     private FlowPanel mainPanel = new FlowPanel();
 31  0
     private FlowPanel titlePanel = new FlowPanel();
 32  0
     private ScrollPanel scrollPanel = new ScrollPanel();
 33  
     
 34  0
     private Anchor closeLink = new Anchor();
 35  0
     private KSDialogResizeHandler resizeHandler = new KSDialogResizeHandler();
 36  
     private HandlerRegistration resizeHandlerRegistrater;
 37  
     
 38  0
     private FlexTable verticalPanel = new FlexTable();
 39  0
     private HorizontalPanel buttonPanel = new HorizontalPanel();
 40  0
     public KSDialog() {
 41  0
         super.setStyleName("ks-lightbox");
 42  
 
 43  0
         mainPanel.setStyleName("ks-lightbox-mainPanel");
 44  0
         titlePanel.setStyleName("ks-lightbox-titlePanel");
 45  0
         closeLink.setStyleName("ks-lightbox-title-closeLink");
 46  0
         scrollPanel.setStyleName("ks-lightbox-title-scrollPanel");
 47  
          
 48  0
         setGlassEnabled(true);
 49  0
         super.setWidget(mainPanel);
 50  0
         mainPanel.add(titlePanel);
 51  0
         mainPanel.add(scrollPanel);
 52  0
         titlePanel.add(closeLink);
 53  
         
 54  0
         verticalPanel.setStyleName("ks-lightbox-layoutTable");
 55  0
         verticalPanel.setWidget(1, 0, buttonPanel);
 56  0
         verticalPanel.getRowFormatter().setStyleName(1, "ks-lightbox-buttonRow");
 57  0
         scrollPanel.add(verticalPanel);
 58  
         
 59  0
         installResizeHandler();
 60  
 
 61  0
         closeLink.addClickHandler(new ClickHandler(){
 62  
 
 63  
             @Override
 64  
             public void onClick(ClickEvent event) {
 65  0
                hide();
 66  0
             }
 67  
         });
 68  
        
 69  0
     }
 70  
     public void uninstallResizeHandler(){
 71  0
         if(resizeHandlerRegistrater != null){
 72  0
             resizeHandlerRegistrater.removeHandler();
 73  
         }
 74  0
     }
 75  
     public void installResizeHandler(){
 76  0
         if(resizeHandlerRegistrater == null){
 77  0
             resizeHandlerRegistrater =  Window.addResizeHandler(resizeHandler);
 78  
         }
 79  0
     }
 80  
     public void setCloseLinkVisible(boolean visible){
 81  0
         closeLink.setVisible(visible);
 82  0
     }
 83  
     public void addButton(Widget button){
 84  0
         buttonPanel.add(button);
 85  0
     }
 86  
     public void setWidget(Widget content){
 87  0
         verticalPanel.setWidget(0, 0, content);
 88  0
         verticalPanel.getRowFormatter().setStyleName(0, "ks-lightbox-contentRow");
 89  0
     }
 90  
     public void setMaxWidth(int width){
 91  0
         this.maxWidth = width;
 92  0
     }
 93  
     public void setMaxHeight(int height){
 94  0
         this.maxHeight = height;
 95  0
     }
 96  
     public void setSize(int width, int height){
 97  0
         super.setSize(width+"px", height+"px");
 98  0
         scrollPanel.setSize((width+10)+"px", (height+10)+"px");
 99  0
     }
 100  
     @Override
 101  
     public void hide(){
 102  0
         super.hide();
 103  0
         uninstallResizeHandler();
 104  0
     }
 105  
     @Override
 106  
     public void show(){
 107  0
         resizeDialog();
 108  0
         super.show();
 109  0
     }
 110  
     @Override
 111  
     protected void onPreviewNativeEvent(NativePreviewEvent preview) {
 112  0
         super.onPreviewNativeEvent(preview);
 113  0
         NativeEvent evt = preview.getNativeEvent();
 114  0
         if (evt.getType().equals("keydown")) {
 115  0
             switch (evt.getKeyCode()) {
 116  
             case KeyCodes.KEY_ESCAPE:
 117  0
                 hide();
 118  
                 break;
 119  
             }
 120  
         }
 121  0
     }
 122  
     private void resizeDialog(){
 123  0
         int width = maxWidth;
 124  0
         int height = maxHeight;
 125  0
         if (Window.getClientWidth() < 850){
 126  0
             width = Window.getClientWidth() - 160;
 127  
         }
 128  
         
 129  0
         height = Window.getClientHeight() - 160;
 130  
         
 131  
         
 132  0
         if(width > maxWidth){
 133  0
             width = maxWidth;
 134  
         }
 135  0
         if(height > maxHeight && maxHeight != 0){
 136  0
             height = maxHeight;
 137  
         }
 138  
 
 139  0
         if(width > 0 && height > 0){
 140  0
             setSize(width, height);
 141  
         }
 142  0
         DeferredCommand.addCommand(new Command(){
 143  
 
 144  
             @Override
 145  
             public void execute() {
 146  0
                 int left = (Window.getClientWidth() - getOffsetWidth()) >> 1;
 147  0
                 int top = (Window.getClientHeight() - getOffsetHeight()) >> 1;
 148  0
                 setPopupPosition(Math.max(Window.getScrollLeft() + left, 0), Math.max(
 149  
                     Window.getScrollTop() + top, 0));        
 150  0
             }
 151  
         });        
 152  0
     }
 153  
 
 154  
 
 155  
     @Override
 156  
     public void fireEvent(GwtEvent<?> event) {
 157  0
         handlers.fireEvent(event);
 158  0
     }
 159  
     
 160  0
     class KSDialogResizeHandler implements ResizeHandler{
 161  
         @Override
 162  
         public void onResize(ResizeEvent event) {
 163  0
             DeferredCommand.addCommand(new Command(){
 164  
 
 165  
                 @Override
 166  
                 public void execute() {
 167  0
                     resizeDialog();
 168  
                    // show();
 169  0
                 }
 170  
             });
 171  0
         }
 172  
     }
 173  
 }