Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * This program is free software; you can redistribute it and/or modify it under the
   * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
   * Foundation.
   *
   * You should have received a copy of the GNU Lesser General Public License along with this
   * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
   * or from the Free Software Foundation, Inc.,
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * Copyright 2013 Pentaho Corporation.  All rights reserved.
  *
  */
 
 package org.pentaho.ui.xul.gwt.util;
 
 
 import java.util.Set;

User: RFellows Date: 7/31/13
 
 public class FrameCover {
 
   private Set<ClickHandlerclickHandlers = new HashSet<ClickHandler>();
 
   private static FocusPanel frameLid;
 
   public FrameCover() {
     Window.addResizeHandler(new ResizeHandler() {
       @Override
       public void onResize(ResizeEvent event) {
         setFrameSize();
       }
     });
   }
 
   public void addClickHandler(ClickHandler handler) {
     .add(handler);
   }
 
   public void cover() {
     if ( == null) {
        = new FocusPanel() {
         public void onBrowserEvent(Event event) {
           int type = event.getTypeInt();
           switch (type) {
             case .: {
               if ((charevent.getKeyCode() == .) {
                 event.stopPropagation();
                 fireHandlers();
               }
               return;
             }
           }
           super.onBrowserEvent(event);
         };
       };
       .addClickHandler(new ClickHandler() {
         public void onClick(ClickEvent event) {
           fireHandlers();
           .setVisible(false);
         }
       });
 
       RootPanel.get().add(, 0, 0);
       .setVisible(true);
       setFrameSize();
     }
     GlassPane.getInstance().show();
   }
 
   public void remove() {
     GlassPane.getInstance().hide();
   }
 
  private void fireHandlers() {
    for(ClickHandler handler : ) {
      handler.onClick(null);
    }
  }
  private void setFrameSize() {
    if( == null){
      return;
    }
    // get all iFrames on the document
    NodeList<Elementiframes = Document.get().getElementsByTagName("iframe");
    int top = .;
    int left = .;
    int width = 0;
    int height = 0;
    // determine the MAX bounds they encompass
    for(int i = 0; i < iframes.getLength(); i++) {
      Element iframe = iframes.getItem(i);
      if(iframe.getOffsetWidth() > 0 && iframe.getOffsetHeight() > 0) {
        top = Math.min(topiframe.getAbsoluteTop());
        left = Math.min(leftiframe.getAbsoluteLeft());
        width = Math.max(widthiframe.getAbsoluteRight());
        height = Math.max(heightiframe.getAbsoluteBottom());
      }
    }
    // set the size/position of the frame cover to that max
  }
New to GrepCode? Check out our FAQ X