Skip to content
Snippets Groups Projects
Commit 42b55271 authored by buczekp's avatar buczekp
Browse files

[LMS-1403] fixed bug with unnecessary reload of section data;

minor refactorings and improvements

SVN: 15052
parent 6cd595c0
No related branches found
No related tags found
No related merge requests found
...@@ -118,6 +118,7 @@ public class ServerRequestQueue ...@@ -118,6 +118,7 @@ public class ServerRequestQueue
request.onInvoke(); request.onInvoke();
} }
} }
requests.clear();
} }
// Internal API // Internal API
......
...@@ -22,7 +22,7 @@ import com.extjs.gxt.ui.client.widget.layout.FitLayout; ...@@ -22,7 +22,7 @@ import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator;
/** /**
* {@link ContentPanel} configured for Experiment Viewer. * {@link ContentPanel} for sections with deferred request handling.
* *
* @author Izabela Adamczyk * @author Izabela Adamczyk
*/ */
...@@ -30,7 +30,7 @@ public class SingleSectionPanel extends ContentPanel ...@@ -30,7 +30,7 @@ public class SingleSectionPanel extends ContentPanel
{ {
private String displayId; private String displayId;
private boolean isContentVisible; private boolean isContentVisible = false;
/** /**
* A queue used to store requests for data when the selection panel is hidden to avoid * A queue used to store requests for data when the selection panel is hidden to avoid
...@@ -47,7 +47,6 @@ public class SingleSectionPanel extends ContentPanel ...@@ -47,7 +47,6 @@ public class SingleSectionPanel extends ContentPanel
setAnimCollapse(false); setAnimCollapse(false);
setBodyBorder(true); setBodyBorder(true);
setLayout(new FitLayout()); setLayout(new FitLayout());
isContentVisible = false;
serverRequestQueue = new ServerRequestQueue(); serverRequestQueue = new ServerRequestQueue();
} }
...@@ -73,23 +72,22 @@ public class SingleSectionPanel extends ContentPanel ...@@ -73,23 +72,22 @@ public class SingleSectionPanel extends ContentPanel
} }
} }
public boolean isContentVisible() public void setContentVisible(boolean visible)
{ {
return isContentVisible; if (this.isContentVisible != visible)
}
public void setContentVisible(boolean isContentVisible)
{
this.isContentVisible = isContentVisible;
if (this.isContentVisible)
{ {
serverRequestQueue.processUniqueRequests(); this.isContentVisible = visible;
if (visible)
{
serverRequestQueue.processUniqueRequests();
}
serverRequestQueue.setProcessImmediately(visible);
} }
serverRequestQueue.setProcessImmediately(this.isContentVisible);
} }
protected ServerRequestQueue getServerRequestQueue() protected ServerRequestQueue getServerRequestQueue()
{ {
return serverRequestQueue; return serverRequestQueue;
} }
} }
...@@ -147,66 +147,40 @@ public class SectionsPanel extends ContentPanel ...@@ -147,66 +147,40 @@ public class SectionsPanel extends ContentPanel
}); });
elements.add(element); elements.add(element);
addToToolbar(element.getButton()); addToToolbar(element.getButton());
if (element.getButton().isPressed()) updateElementVisibility(element);
{
element.getPanel().setContentVisible(true);
internalAdd(element);
} else
{
element.getPanel().setContentVisible(false);
}
} }
/** removes all sections and adds them once again with with refreshed state */ /** removes all sections and adds them once again with with refreshed state */
private void refreshLayout() private void refreshLayout()
{ {
// NOTE: changing visibility of only those sections that changed state doesn't improve
// performance but makes code more complex
removeAll(); removeAll();
for (SectionElement el : elements) for (SectionElement el : elements)
{ {
boolean isVisible = el.getButton().isPressed(); updateElementVisibility(el);
el.getPanel().setContentVisible(isVisible);
if (isVisible)
{
internalAdd(el);
}
} }
layout(); layout();
} }
private void addToToolbar(ToggleButton bb) private void updateElementVisibility(SectionElement element)
{
toolbar.add(bb);
}
public void removePanel(final SingleSectionPanel panel)
{ {
int index = elements.indexOf(panel); boolean visible = element.getButton().isPressed();
if (index > -1) element.getPanel().setContentVisible(visible);
if (visible)
{ {
internalRemove(panel); internalAdd(element);
elements.remove(index);
toolbar.remove(toolbar.getItem(index));
} }
} }
private void internalAdd(final SectionElement element) private void addToToolbar(ToggleButton bb)
{
super.add(element.getPanel());
}
private void internalRemove(final ContentPanel panel)
{ {
super.remove(panel); toolbar.add(bb);
} }
/** private void internalAdd(final SectionElement element)
* Use {@link #removePanel(SingleSectionPanel)}
*/
@Deprecated
@Override
protected boolean remove(Component item)
{ {
return super.remove(item); super.add(element.getPanel());
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment