Mercurial > dive4elements > river
changeset 4254:33b15ac17fd1
Only create and add GaugePanel when necessary
The GaugePanel isn't created always and only show if WINFO and a river is
selected now. It is only created on demand. Therefore all access to the
GaugePanel is abstraced via methods that check if the GaugePanel is null before
accessing it's methods.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Thu, 25 Oct 2012 13:58:53 +0200 |
parents | a1bc5b8cff0f |
children | 9a1a3406deb5 |
files | flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java |
diffstat | 1 files changed, 51 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java Thu Oct 25 13:52:58 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java Thu Oct 25 13:58:53 2012 +0200 @@ -115,6 +115,8 @@ protected GaugePanel gaugePanel; protected Canvas reportPanel; + private SectionStack stack; + public ParameterList(FLYS flys, CollectionView cView, String title) { super(title); @@ -206,18 +208,11 @@ protected SectionStack createSectionStack() { - final SectionStack stack = new SectionStack(); + stack = new SectionStack(); stack.setHeight100(); stack.setCanResizeSections(true); stack.setVisibilityMode(VisibilityMode.MULTIPLE); - final SectionStackSection gaugeSection = new SectionStackSection(); - gaugeSection.setExpanded(false); - gaugeSection.setTitle(MSG.gaugePanelTitle()); - gaugePanel = new GaugePanel(flys, gaugeSection); - gaugePanel.setWidth100(); - gaugePanel.setHeight100(); - // This canvas is used to render helper widgets. final SectionStackSection helperSection = new SectionStackSection(); helperSection.setExpanded(false); @@ -260,7 +255,7 @@ tablePanel.setWidth100(); tableSection.setItems(tablePanel); - stack.setSections(gaugeSection, helperSection, tableSection); + stack.setSections(helperSection, tableSection); return stack; } @@ -758,13 +753,17 @@ } if (art instanceof WINFOArtifact) { String river = desc.getRiver(); + if (river != null) { renderGaugeInfo(desc.getRiver(), desc.getOldData()); } else { - gaugePanel.hide(); + hideGaugePanel(); } } + else { + removeGaugePanel(); + } addOldDatas( desc.getOldData(), @@ -943,10 +942,51 @@ } + private void createGaugePanel() { + GWT.log("ParameterList - createGaugePanel"); + if (gaugePanel == null) { + gaugePanel = new GaugePanel(flys); + gaugePanel.setWidth100(); + gaugePanel.setHeight100(); + } + } + + private void addGaugePanel() { + GWT.log("ParameterList - addGaugePanel"); + createGaugePanel(); + stack.addSection(gaugePanel.getSection(), 0); + } + + private void showGaugePanel() { + GWT.log("ParameterList - showGaugePanel"); + + /* Don't add GaugePanel twice */ + SectionStackSection exists = stack.getSection(GaugePanel.SECTION_ID); + if (exists == null) { + addGaugePanel(); + } + + gaugePanel.show(); + } + + private void hideGaugePanel() { + GWT.log("ParameterList - hideGaugePanel"); + + if (gaugePanel != null) { + gaugePanel.hide(); + } + } + + private void removeGaugePanel() { + GWT.log("ParameterList - removeGaugePanel"); + stack.removeSection(GaugePanel.SECTION_ID); + } + + private void renderGaugeInfo(String river, DataList[] data) { + showGaugePanel(); gaugePanel.setRiver(river); gaugePanel.setData(data); - gaugePanel.show(); } }