From: Christos KK Loverdos Date: Fri, 31 May 2013 10:31:04 +0000 (+0300) Subject: Better integrate the loader with the up/down arrows X-Git-Tag: 0.14rc1~24^2 X-Git-Url: https://code.grnet.gr/git/pithos-web-client/commitdiff_plain/67d30f0209ba88584963d91824e0a28fcf8f8908 Better integrate the loader with the up/down arrows Refs #3784 --- diff --git a/src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java b/src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java index 25551e1..5ce2f1d 100644 --- a/src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java +++ b/src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java @@ -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() { - - @Override - public void onOpen(OpenEvent event) { - panel.setHeader(createHeader(resources, title, true)); - } - }); - panel.addCloseHandler(new CloseHandler() { - - @Override - public void onClose(CloseEvent event) { - panel.setHeader(createHeader(resources, title, false)); - } - }); - + + if(!ajaxLoader) { + addOpenCloseHandlers(); + } + initWidget(panel); } + + private void addOpenCloseHandlers() { + panel.addOpenHandler(new OpenHandler() { + @Override + public void onOpen(OpenEvent event) { + panel.setHeader(createHeader(resources, title, false, true)); + } + }); + panel.addCloseHandler(new CloseHandler() { + + @Override + public void onClose(CloseEvent 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); diff --git a/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java index 95643af..495931b 100644 --- a/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java +++ b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java @@ -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 null 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);