# HG changeset patch # User Ingo Weinzierl # Date 1351166559 -7200 # Node ID 9a1a3406deb5c2b8d4fe1fbac3e537f49bfc01ba # Parent 33b15ac17fd1f52a061d6f3d585346d071beea0e# Parent 670e98f5a44114cb2a6b3bf319a50e781c62d613 Merged. diff -r 670e98f5a441 -r 9a1a3406deb5 flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java Thu Oct 25 14:01:46 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java Thu Oct 25 14:02:39 2012 +0200 @@ -9,6 +9,7 @@ import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.WidgetCanvas; import com.smartgwt.client.widgets.events.ResizedEvent; import com.smartgwt.client.widgets.events.ResizedHandler; import com.smartgwt.client.widgets.layout.SectionStackSection; @@ -47,6 +48,10 @@ protected RiverInfoPanel riverinfopanel; + public final static String SECTION_ID = "GaugePanelSection"; + private final static String GAUGE_TREE_CANVAS_ID = + "GaugeTreeCanvas"; + /** * Creates a new VLayout with a SectionStackSection * The GaugePanel's SectionStackSection is hidden by default. @@ -54,16 +59,24 @@ * @param flys The FLYS object * @param section The section stack section to place the VLayout in. */ - public GaugePanel(FLYS flys, SectionStackSection section) { + public GaugePanel(FLYS flys) { + SectionStackSection section = new SectionStackSection(); + section.setExpanded(false); + section.setTitle(MSG.gaugePanelTitle()); + section.setName(SECTION_ID); + section.setID(SECTION_ID); + gaugetree = new GaugeTree(flys); - gaugetreecanvas = new Canvas(); - gaugetreecanvas.addChild(gaugetree); + gaugetreecanvas = new WidgetCanvas(gaugetree); + gaugetreecanvas.setID(GAUGE_TREE_CANVAS_ID); setOverflow(Overflow.HIDDEN); + setStyleName("gaugepanel"); + section.setHidden(true); section.setItems(this); this.section = section; - setStyleName("gaugepanel"); + addResizedHandler(this); } @@ -88,6 +101,8 @@ * Loads the river info and renders it afterwards */ public void refresh() { + contract(); + riverInfoService.getGauges(this.river, new AsyncCallback() { @Override public void onFailure(Throwable e) { @@ -98,6 +113,7 @@ public void onSuccess(RiverInfo riverinfo) { GWT.log("Loaded river info"); renderGaugeOverviewInfo(riverinfo); + expand(); } }); } @@ -106,11 +122,10 @@ gaugetree.setGauges(riverinfo); if (riverinfopanel == null) { - removeMembers(getMembers()); + removeAllMembers(); + riverinfopanel = new RiverInfoPanel(riverinfo); - gaugetreecanvas.setWidth("100%"); - addMember(riverinfopanel); addMember(gaugetreecanvas); } @@ -135,10 +150,6 @@ gaugetree.setHeight("" + height + "px"); gaugetree.setWidth("" + width + "px"); - - for (Canvas canvas : getMembers()) { - GWT.log("GaugePanel - member height " + canvas.getHeight()); - } } @@ -163,12 +174,34 @@ @Override public void addMember(Canvas component) { super.addMember(component); - section.setExpanded(true); + expand(); } @Override public void removeMembers(Canvas[] components) { super.removeMembers(components); + contract(); + } + + public SectionStackSection getSection() { + return this.section; + } + + private void removeAllMembers() { + removeMembers(getMembers()); + } + + /** + * Expands the gauge section + */ + public void expand() { + section.setExpanded(true); + } + + /** + * Contracts/shrinks the expanded gauge section + */ + public void contract() { section.setExpanded(false); } } diff -r 670e98f5a441 -r 9a1a3406deb5 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 14:01:46 2012 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java Thu Oct 25 14:02:39 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(); } }