diff options
author | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
commit | 7b25b3886ea95bc6495506fbe9472e45fcbde684 (patch) | |
tree | 0b93cb65dab437feb46720659a63b8f1ef48f7f4 /uitest/src/com/vaadin/tests/TreeFilesystemContainer.java | |
parent | 8941056349e302e687e40e94c13709e75f256d73 (diff) | |
download | vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.tar.gz vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.zip |
Renamed tests -> uitest and tests/testbench -> uitest/src (#9299)
Diffstat (limited to 'uitest/src/com/vaadin/tests/TreeFilesystemContainer.java')
-rw-r--r-- | uitest/src/com/vaadin/tests/TreeFilesystemContainer.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/TreeFilesystemContainer.java b/uitest/src/com/vaadin/tests/TreeFilesystemContainer.java new file mode 100644 index 0000000000..672c518ea8 --- /dev/null +++ b/uitest/src/com/vaadin/tests/TreeFilesystemContainer.java @@ -0,0 +1,115 @@ +/* + * Copyright 2011 Vaadin Ltd. + * + * 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.vaadin.tests; + +import java.io.File; + +import com.vaadin.data.util.FilesystemContainer; +import com.vaadin.data.util.FilesystemContainer.FileItem; +import com.vaadin.tests.util.SampleDirectory; +import com.vaadin.ui.Component.Event; +import com.vaadin.ui.Component.Listener; +import com.vaadin.ui.Field; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.UI.LegacyWindow; +import com.vaadin.ui.Tree; +import com.vaadin.ui.VerticalLayout; + +/** + * Browsable file explorer using Vaadin Tree component. Demonstrates: how to use + * <code>com.vaadin.ui.Component.Tree</code> datasource container, how to create + * <code>com.vaadin.data.util.FilesystemContainer</code>, how to read + * <code>com.vaadin.ui.Component.Event</code> objects, how to receive and handle + * any event by implementing <code>com.vaadin.ui.Component.Listener</code>. + * + * @since 4.0.0 + * + */ +public class TreeFilesystemContainer extends + com.vaadin.Application.LegacyApplication implements Listener { + + // Filesystem explorer panel and it's components + private final Panel explorerPanel = new Panel("Filesystem explorer"); + + private final Tree filesystem = new Tree(); + + // File properties panel and it's components + private final Panel propertyPanel = new Panel("File properties"); + + private final Label fileProperties = new Label(); + + @Override + public void init() { + final LegacyWindow w = new LegacyWindow("Tree FilesystemContainer demo"); + setMainWindow(w); + final VerticalLayout main = new VerticalLayout(); + w.setContent(main); + main.setMargin(true); + main.setSpacing(true); + + propertyPanel.setHeight("120px"); + main.addComponent(propertyPanel); + explorerPanel.setHeight("100%"); + main.addComponent(explorerPanel); + main.setExpandRatio(explorerPanel, 1); + + // Explorer panel contains tree + explorerPanel.addComponent(filesystem); + + // Property panel contains label + propertyPanel.addComponent(fileProperties); + fileProperties.setCaption("No file selected."); + propertyPanel.setEnabled(false); + + // Get sample directory + final File sampleDir = SampleDirectory.getDirectory(this, w); + // Populate tree with FilesystemContainer + final FilesystemContainer fsc = new FilesystemContainer(sampleDir, true); + filesystem.setContainerDataSource(fsc); + // "this" handles all filesystem events + // e.g. node clicked, expanded etc. + filesystem.addListener(this); + // Value changes are immediate + filesystem.setImmediate(true); + } + + /** + * Listener for any component events. This class has been registered as an + * listener for component fsTree. + */ + @Override + public void componentEvent(Event event) { + // Check if event occured at fsTree component + if (event.getSource() == filesystem) { + // Check if event is about changing value + if (event.getClass() == Field.ValueChangeEvent.class) { + // Update property panel contents + final FileItem fileItem = (FileItem) filesystem + .getItem(filesystem.getValue()); + fileProperties.setIcon(fileItem.getIcon()); + fileProperties.setCaption(fileItem.getName() + ", size " + + fileItem.getSize() + " bytes."); + propertyPanel.setEnabled(true); + } + // here we could check for other type of events for filesystem + // component + } + // here we could check for other component's events + } + +} |