# HG changeset patch # User Björn Ricks # Date 1351166333 -7200 # Node ID 33b15ac17fd1f52a061d6f3d585346d071beea0e # Parent a1bc5b8cff0fbee4c264c4b1e4eaf5e1b239ef4b 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. diff -r a1bc5b8cff0f -r 33b15ac17fd1 flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java --- 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(); } }