Java tutorial
/* * Copyright 2014 Alen Caljkusic. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.zklogtool.web.components; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import com.vaadin.annotations.AutoGenerated; import com.vaadin.data.Property; import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Label; import com.vaadin.ui.Tree; import com.vaadin.ui.VerticalLayout; import com.zklogtool.data.DataState; import com.zklogtool.printer.DataNodePrinter; import com.zklogtool.printer.UnicodeDecoder; import com.zklogtool.util.Util; public class SnapshotView extends CustomComponent { @AutoGenerated private AbsoluteLayout mainLayout; @AutoGenerated private HorizontalSplitPanel horizontalSplitPanel_1; @AutoGenerated private VerticalLayout verticalLayout_2; @AutoGenerated private Label description; @AutoGenerated private VerticalLayout verticalLayout_1; @AutoGenerated private Tree sessionTree; @AutoGenerated private Label label_5; @AutoGenerated private Tree dataTree; @AutoGenerated private Label label_4; private DataState dataState; public SnapshotView(DataState dataState) { buildMainLayout(); setCompositionRoot(mainLayout); dataTree.setImmediate(true); sessionTree.setImmediate(true); description.setContentMode(ContentMode.PREFORMATTED); this.dataState = dataState; TreeNode parent = new TreeNode("/", ""); dataTree.addItem(parent); dataTree.setChildrenAllowed(parent, true); createDataTree(parent); createSessionTree(); } private void createSessionTree() { final String parent = "sessions"; final Map<String, Integer> sessionMap = new HashMap<String, Integer>(); Iterator i = dataState.getSessions().entrySet().iterator(); while (i.hasNext()) { Map.Entry pairs = (Map.Entry) i.next(); sessionMap.put(Util.longToHexString((Long) pairs.getKey()), (Integer) pairs.getValue()); } sessionTree.addItem(parent); if (sessionMap.isEmpty()) { sessionTree.setChildrenAllowed(parent, false); } else { sessionTree.setChildrenAllowed(parent, true); Iterator it = sessionMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); sessionTree.addItem(pairs.getKey()); sessionTree.setChildrenAllowed(pairs.getKey(), false); sessionTree.setParent(pairs.getKey(), parent); } } sessionTree.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent event) { // TODO Auto-generated method stub if (sessionTree.getValue() == null) return; StringBuilder descriptionStringBuilder = new StringBuilder(); String session = sessionTree.getValue().toString(); if (session == null ? parent != null : !session.equals(parent)) { descriptionStringBuilder.append("Session id:\t").append(session).append("\n"); descriptionStringBuilder.append("Timeout:\t").append(sessionMap.get(session)).append("\n"); description.setValue(descriptionStringBuilder.toString()); } } }); } private void createDataTree(TreeNode parent) { Set<String> children = dataState.getChildren(parent.getFullPath()); for (String child : children) { TreeNode item = new TreeNode(child, parent.getFullPath() + "/" + child); dataTree.addItem(item); dataTree.setParent(item, parent); if (dataState.getChildren(item.getFullPath()) != null && dataState.getChildren(item.getFullPath()).size() != 0) { dataTree.setChildrenAllowed(item, true); createDataTree(item); } else { dataTree.setChildrenAllowed(item, false); } } dataTree.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent event) { Object value = dataTree.getValue(); if (value == null) { return; } String selectedValue = ((TreeNode) value).getFullPath(); if (!selectedValue.contentEquals("/")) { StringBuilder descriptionStringBuilder = new StringBuilder(); descriptionStringBuilder.append("Path:\t\t").append(selectedValue).append("\n"); DataNodePrinter printer = new DataNodePrinter(descriptionStringBuilder, new UnicodeDecoder()); printer.printDataNode(dataState.getNode(selectedValue), dataState); description.setValue(descriptionStringBuilder.toString()); } } }); } class TreeNode { String name; String fullPath; public TreeNode(String name, String fullPath) { this.name = name; this.fullPath = fullPath; } @Override public String toString() { return name; } public String getFullPath() { return fullPath; } } @AutoGenerated private AbsoluteLayout buildMainLayout() { // common part: create layout mainLayout = new AbsoluteLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("100%"); mainLayout.setHeight("100%"); // top-level component properties setWidth("100.0%"); setHeight("100.0%"); // horizontalSplitPanel_1 horizontalSplitPanel_1 = buildHorizontalSplitPanel_1(); mainLayout.addComponent(horizontalSplitPanel_1, "top:0.0px;right:0.0px;bottom:8.0px;left:0.0px;"); return mainLayout; } @AutoGenerated private HorizontalSplitPanel buildHorizontalSplitPanel_1() { // common part: create layout horizontalSplitPanel_1 = new HorizontalSplitPanel(); horizontalSplitPanel_1.setImmediate(false); horizontalSplitPanel_1.setWidth("100.0%"); horizontalSplitPanel_1.setHeight("100.0%"); // verticalLayout_1 verticalLayout_1 = buildVerticalLayout_1(); horizontalSplitPanel_1.addComponent(verticalLayout_1); // verticalLayout_2 verticalLayout_2 = buildVerticalLayout_2(); horizontalSplitPanel_1.addComponent(verticalLayout_2); return horizontalSplitPanel_1; } @AutoGenerated private VerticalLayout buildVerticalLayout_1() { // common part: create layout verticalLayout_1 = new VerticalLayout(); verticalLayout_1.setImmediate(false); verticalLayout_1.setWidth("100.0%"); verticalLayout_1.setHeight("-1px"); verticalLayout_1.setMargin(true); verticalLayout_1.setSpacing(true); // label_4 label_4 = new Label(); label_4.setImmediate(false); label_4.setWidth("-1px"); label_4.setHeight("-1px"); label_4.setValue("Data Tree:"); verticalLayout_1.addComponent(label_4); // dataTree dataTree = new Tree(); dataTree.setImmediate(false); dataTree.setWidth("-1px"); dataTree.setHeight("-1px"); verticalLayout_1.addComponent(dataTree); // label_5 label_5 = new Label(); label_5.setImmediate(false); label_5.setWidth("-1px"); label_5.setHeight("-1px"); label_5.setValue("Sessions:"); verticalLayout_1.addComponent(label_5); // sessionTree sessionTree = new Tree(); sessionTree.setImmediate(false); sessionTree.setWidth("-1px"); sessionTree.setHeight("-1px"); verticalLayout_1.addComponent(sessionTree); return verticalLayout_1; } @AutoGenerated private VerticalLayout buildVerticalLayout_2() { // common part: create layout verticalLayout_2 = new VerticalLayout(); verticalLayout_2.setImmediate(false); verticalLayout_2.setWidth("100.0%"); verticalLayout_2.setHeight("100.0%"); verticalLayout_2.setMargin(true); // description description = new Label(); description.setImmediate(false); description.setWidth("-1px"); description.setHeight("-1px"); description.setValue("Select znode or session"); verticalLayout_2.addComponent(description); return verticalLayout_2; } }