Better integrate the loader with the up/down arrows issue_3784
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 31 May 2013 10:31:04 +0000 (13:31 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 31 May 2013 10:31:04 +0000 (13:31 +0300)
Refs #3784

src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java
src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java

index 25551e1..5ce2f1d 100644 (file)
@@ -42,14 +42,7 @@ import com.google.gwt.event.logical.shared.OpenHandler;
 import com.google.gwt.resources.client.ClientBundle;
 import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.DisclosurePanel;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.HasVerticalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.*;
 
 public class PithosDisclosurePanel extends Composite {
 
@@ -80,58 +73,63 @@ public class PithosDisclosurePanel extends Composite {
         ImageResource ajaxLoader();
        }
        
-       DisclosurePanel panel;
-       
-       Resources resources;
-
-    final boolean ajaxLoader;
+       private final DisclosurePanel panel;
+    private final Resources resources;
+    private final String title;
 
     public PithosDisclosurePanel(final Resources _resources, final String title, boolean open) {
-        this(_resources, title, open, false);
+        this(_resources, title, false, open);
     }
 
-       public PithosDisclosurePanel(final Resources _resources, final String title, boolean open, boolean ajaxLoader) {
-        this.ajaxLoader = ajaxLoader;
+       public PithosDisclosurePanel(final Resources _resources, final String title, boolean ajaxLoader, boolean open) {
+        this.title = title;
 
-               resources = _resources;
+               this.resources = _resources;
                resources.pithosDisclosurePanelCss().ensureInjected();
-               panel = new DisclosurePanel();
+               this.panel = new DisclosurePanel();
                panel.addStyleName(resources.pithosDisclosurePanelCss().disclosurePanel());
-               panel.setHeader(createHeader(resources, title, open));
+               panel.setHeader(createHeader(resources, title, ajaxLoader, open));
                panel.setOpen(open);
-               panel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
-                       
-                       @Override
-                       public void onOpen(OpenEvent<DisclosurePanel> event) {
-                               panel.setHeader(createHeader(resources, title, true));
-                       }
-               });
-               panel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
-                       
-                       @Override
-                       public void onClose(CloseEvent<DisclosurePanel> event) {
-                               panel.setHeader(createHeader(resources, title, false));
-                       }
-               });
-               
+
+        if(!ajaxLoader) {
+            addOpenCloseHandlers();
+        }
+
                initWidget(panel);
        }
+
+    private void addOpenCloseHandlers() {
+        panel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
+            @Override
+            public void onOpen(OpenEvent<DisclosurePanel> event) {
+                panel.setHeader(createHeader(resources, title, false, true));
+            }
+        });
+        panel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
+
+            @Override
+            public void onClose(CloseEvent<DisclosurePanel> event) {
+                panel.setHeader(createHeader(resources, title, false, false));
+            }
+        });
+    }
+
+    public void setLoaded(boolean open) {
+        this.panel.setHeader(createHeader(resources, title, false, open));
+        addOpenCloseHandlers();
+    }
        
-       Widget createHeader(Resources resources, String title, boolean open) {
+       Widget createHeader(Resources resources, String title, boolean ajaxLoader, boolean open) {
                HorizontalPanel header = new HorizontalPanel();
         
                Image img = new Image(resources.icon());
                header.add(img);
-        if(ajaxLoader) {
-            final Image alImg = new Image(resources.ajaxLoader());
-            header.add(alImg);
-        }
                header.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE);
                header.setCellWidth(img, "32px");
                HTML titleHtml = new HTML(title);
                header.add(titleHtml);
                header.setCellVerticalAlignment(titleHtml, HasVerticalAlignment.ALIGN_MIDDLE);
-               Image arrow = new Image(open ? resources.open() : resources.closed());
+               Image arrow = new Image(ajaxLoader ? resources.ajaxLoader() : open ? resources.open() : resources.closed());
                arrow.addStyleName(resources.pithosDisclosurePanelCss().arrow());
                header.add(arrow);
                header.setCellHorizontalAlignment(arrow, HasHorizontalAlignment.ALIGN_RIGHT);
index 95643af..495931b 100644 (file)
@@ -157,7 +157,7 @@ public class OtherSharedTreeView extends Composite implements TreeView {
     public OtherSharedTreeView(OtherSharedTreeViewModel viewModel, boolean ajaxLoader) {
         this.model = viewModel;
         
-        PithosDisclosurePanel panel = new PithosDisclosurePanel((Resources) GWT.create(Resources.class), Const.TXT_SHARED_WITH_ME, false, ajaxLoader);
+        PithosDisclosurePanel panel = new PithosDisclosurePanel((Resources) GWT.create(Resources.class), Const.TXT_SHARED_WITH_ME, ajaxLoader, false);
         /*
          * Create the tree using the model. We use <code>null</code> as the default
          * value of the root node. The default value will be passed to
@@ -165,7 +165,9 @@ public class OtherSharedTreeView extends Composite implements TreeView {
          */
         CellTree.Resources res = GWT.create(BasicResources.class);
         tree = new CellTree(model, null, res);
-        tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
+        if(!ajaxLoader) {
+            tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
+        }
 
         panel.setContent(tree);
         initWidget(panel);