diff options
author | Jani Laakso <jani.laakso@itmill.com> | 2007-04-02 14:27:33 +0000 |
---|---|---|
committer | Jani Laakso <jani.laakso@itmill.com> | 2007-04-02 14:27:33 +0000 |
commit | 7397520086aec1cff86d6da93577c9c8d68aeb3f (patch) | |
tree | c4b26437a7584d7800c391c09a627b1326951bb9 /src/com/itmill/toolkit/demo/TreeFilesystemContainer.java | |
parent | dc6043cba8ec3e51a75d7c0f339ad94f39e8f2c3 (diff) | |
download | vaadin-framework-7397520086aec1cff86d6da93577c9c8d68aeb3f.tar.gz vaadin-framework-7397520086aec1cff86d6da93577c9c8d68aeb3f.zip |
Added new demos.
svn changeset:1097/svn branch:trunk
Diffstat (limited to 'src/com/itmill/toolkit/demo/TreeFilesystemContainer.java')
-rw-r--r-- | src/com/itmill/toolkit/demo/TreeFilesystemContainer.java | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/TreeFilesystemContainer.java b/src/com/itmill/toolkit/demo/TreeFilesystemContainer.java new file mode 100644 index 0000000000..3297b45d3a --- /dev/null +++ b/src/com/itmill/toolkit/demo/TreeFilesystemContainer.java @@ -0,0 +1,94 @@ +package com.itmill.toolkit.demo; + +import java.io.File; + +import com.itmill.toolkit.data.util.FilesystemContainer; +import com.itmill.toolkit.data.util.FilesystemContainer.FileItem; +import com.itmill.toolkit.ui.*; +import com.itmill.toolkit.ui.Component.Event; +import com.itmill.toolkit.ui.Component.Listener; + +/** + * Browsable file explorer using Toolkit Tree component. Demonstrates: how to + * use <code>com.itmill.toolkit.ui.Component.Tree</code> datasource container, + * how to create <code>com.itmill.toolkit.data.util.FilesystemContainer</code>, + * how to read <code>com.itmill.toolkit.ui.Component.Event</code> objects, how + * to receive and handle any event by implementing + * <code>com.itmill.toolkit.ui.Component.Listener</code>. + * + * @since 4.0.0 + * + */ +public class TreeFilesystemContainer extends com.itmill.toolkit.Application + implements Listener { + + // Default is root directory, e.g. / on unix or \ on windows + private static final String DIR_ROOT = "" + File.separatorChar; + + // Filesystem explorer panel and it's components + private Panel explorerPanel = new Panel("Filesystem explorer"); + + private Tree filesystem = new Tree(); + + // File properties panel and it's components + private Panel propertyPanel = new Panel("File properties"); + + private Label fileProperties = new Label(); + + public void init() { + Window main = new Window("Tree demo"); + setMainWindow(main); + + // set the application to use Corporate -theme + setTheme("corporate"); + + // Main window contains heading and two panels + main.addComponent(new Label("<h3>TreeFilesystemContainer demo</h3>", + Label.CONTENT_XHTML)); + main.addComponent(propertyPanel); + main.addComponent(explorerPanel); + + // Explorer panel contains tree + explorerPanel.addComponent(filesystem); + explorerPanel.setWidth(500); + + // Property panel contains label + propertyPanel.addComponent(fileProperties); + fileProperties.setCaption("No file selected."); + propertyPanel.setEnabled(false); + propertyPanel.setWidth(500); + + // Populate tree with FilesystemContainer + FilesystemContainer fsc = new FilesystemContainer(new File(DIR_ROOT), + true); + filesystem.setContainerDataSource(fsc); + // "this" handles all filesystem events + // e.g. node clicked, expanded etc. + filesystem.addListener((Listener) this); + // Value changes are immediate + filesystem.setImmediate(true); + } + + /** + * Listener for any component events. This class has been registered as an + * listener for component fsTree. + */ + 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 + FileItem fileItem = (FileItem) filesystem.getItem(filesystem + .getValue()); + fileProperties.setIcon(fileItem.getIcon()); + fileProperties.setCaption(fileItem.getName() + ", size " + + fileItem.getSize() + " bytes."); + } + // here we could check for other type of events for filesystem + // component + } + // here we could check for other component's events + } + +} |