Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012 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.uberfire.ext.widgets.common.client.common;
 
 import  com.google.gwt.animation.client.Animation;
 import  com.google.gwt.dom.client.Style.Overflow;
 import  com.google.gwt.user.client.ui.SimplePanel;
 import  com.google.gwt.user.client.ui.VerticalPanel;
 import  com.google.gwt.user.client.ui.Widget;
 
 public class LazyStackPanelRow extends VerticalPanel {
 
     private final AbstractLazyStackPanelHeader header;
     private LoadContentCommand contentLoad;
     private Widget contentWidget = null;
     private SimplePanel contentPanel = new SimplePanel();
 
     private static final int ANIMATION_DURATION = 350;
 
     private boolean expanded;
 
     public LazyStackPanelRow(AbstractLazyStackPanelHeader titleWidget,
                              LoadContentCommand contentLoad,
                              boolean expanded) {
         this.setWidth("100%");
         this. = expanded;
         this. = titleWidget;
         this. = contentLoad;
         init();
     }
 
     public LazyStackPanelRow(AbstractLazyStackPanelHeader titleWidget,
                              LoadContentCommand contentLoad) {
         this(titleWidget,
                 contentLoad,
                 false);
     }
 
     private void init() {
         clear();
         add();
         if ( != null) {
             .setVisible();
         }
     }
 
         return ;
     }
 
     public SimplePanel getContentPanel() {
         return ;
     }
 
     public void expand() {
          = true;
 
         if ( == null) {
              = .load();
             .add();
         }
         .setVisible(true);
         doAnimation(true);
     }
 
     public void compress() {
          = false;
         .setVisible(true);
         doAnimation(false);
     }
 
     public boolean isExpanded() {
         return ;
     }
 
     private void doAnimation(boolean isExpanding) {
         if (.getWidget() != null) {
             ContentAnimation contentAnimation = new ContentAnimation();
             contentAnimation.setExpanding(isExpanding);
             contentAnimation.run();
         }
     }
 
     private static class ContentAnimation extends Animation {
 
         private boolean isExpanding;
        private SimplePanel content;
        private int height;
        ContentAnimation(SimplePanel content) {
            this. = content;
            this. = content.getOffsetHeight();
        }
        void setExpanding(boolean isExpanding) {
            this. = isExpanding;
        }
        @Override
        protected void onUpdate(double progress) {
            if (!) {
                progress = 1.0 - progress;
            }
            int h = (int) (this. * progress);
            .setHeight(h + "px");
        }
        @Override
        protected void onStart() {
            .getElement().getStyle().setOverflow(Overflow.HIDDEN);
            super.onStart();
        }
        @Override
        protected void onComplete() {
            super.onComplete();
            .setVisible();
            .getElement().getStyle().setOverflow(Overflow.VISIBLE);
            .setHeight("100%");
        }
    }
New to GrepCode? Check out our FAQ X