Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWindow.java @ 534:e08777967bad
Added a first implementation of a MousePositionPanel - work is not finished yet.
flys-client/trunk@2025 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 27 May 2011 15:38:24 +0000 |
parents | f33af25b7490 |
children | 3629d36f0e5d |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.List; import java.util.ArrayList; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.tree.Tree; import com.smartgwt.client.widgets.tree.TreeNode; import com.smartgwt.client.widgets.tree.TreeGrid; import com.smartgwt.client.widgets.layout.Layout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Artifact; import de.intevation.flys.client.shared.model.ArtifactDescription; import de.intevation.flys.client.shared.model.Data; import de.intevation.flys.client.shared.model.DataList; import de.intevation.flys.client.shared.model.DataItem; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.services.MetaDataService; import de.intevation.flys.client.client.services.MetaDataServiceAsync; import de.intevation.flys.client.shared.model.DataCageTree; import de.intevation.flys.client.shared.model.DataCageNode; public class DatacageWindow extends Window { protected MetaDataServiceAsync metaDataService = GWT.create(MetaDataService.class); protected FLYSConstants messages = GWT.create(FLYSConstants.class); protected Artifact artifact; protected TreeGrid treeGrid; protected Layout layout; public DatacageWindow(Artifact artifact) { this.artifact = artifact; setWidth(200); setHeight(300); layout = new VLayout(); layout.setWidth100(); addItem(layout); treeGrid = new TreeGrid(); treeGrid.setLoadDataOnDemand(false); treeGrid.setWidth100(); treeGrid.setHeight100(); layout.addMember(treeGrid); String river = findRiver(); setTitle("Datenkorb: " + river); setShowMinimizeButton(false); setIsModal(true); setShowModalMask(true); setCanDragResize(true); centerInPage(); triggerTreeBuilding(river); } protected void triggerTreeBuilding(String river) { Config config = Config.getInstance(); String url = config.getServerUrl(); String locale = config.getLocale(); metaDataService.getMetaData( url, locale, river, new AsyncCallback<DataCageTree>() { public void onFailure(Throwable caught) { GWT.log("Could not load meta data."); SC.warn(messages.getString(caught.getMessage())); } public void onSuccess(DataCageTree tree) { GWT.log("Successfully loaded meta data."); buildTree(tree); } }); } protected void buildTree(DataCageTree tree) { treeGrid.setData(convert(tree)); } protected static TreeNode convert(DataCageNode node) { List<DataCageNode> children = node.getChildren(); TreeNode [] cs; if (children != null) { ArrayList<TreeNode> nc = new ArrayList<TreeNode>(children.size()); for (DataCageNode dcn: children) { nc.add(convert(dcn)); } cs = nc.toArray(new TreeNode[nc.size()]); } else { cs = new TreeNode[0]; } return new TreeNode(node.getName(), cs); } protected static Tree convert(DataCageTree tree) { DataCageNode root = tree.getRoot(); List<DataCageNode> children = root.getChildren(); TreeNode [] cs; if (children != null) { ArrayList<TreeNode> nc = new ArrayList<TreeNode>(children.size()); if (nc != null) { for (DataCageNode dcn: children) { nc.add(convert(dcn)); } } cs = nc.toArray(new TreeNode[nc.size()]); } else { cs = new TreeNode[0]; } TreeNode rn = new TreeNode(root.getName(), cs); Tree r = new Tree(); r.setRoot(rn); return r; } protected String findRiver() { ArtifactDescription adescr = artifact.getArtifactDescription(); DataList [] data = adescr.getOldData(); if (data != null && data.length > 0) { for (int i = 0; i < data.length; i++) { DataList dl = data[i]; if (dl.getState().equals("state.winfo.river")) { for (int j = dl.size()-1; j >= 0; --j) { Data d = dl.get(j); DataItem [] di = d.getItems(); if (di != null && di.length == 1) { return d.getItems()[0].getStringValue(); } } } } } return ""; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :