Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can add handler to NodeInfo of TreeViewModel of CellTree.</p> <p>Here is example how it is possible to do:</p> <p>First of all let's define what is folder:</p> <pre><code>// the simplest possible folder even without subfolders just to make example working public class Folder { private String name; public Folder(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } </code></pre> <p>Let's say part of your ui.xml is the following:</p> <pre><code>&lt;g:HorizontalPanel&gt; &lt;cellview:CellTree ui:field="folderTree"/&gt; &lt;g:Label ui:field="folderName"/&gt; &lt;/g:HorizontalPanel&gt; </code></pre> <p>Than you have UiBinder:</p> <pre><code>public static interface Binder extends UiBinder&lt;HorizontalPanel, BinderOwner&gt; {} </code></pre> <p>Here is how you define FolerTreeModel that is required for your CellTree:</p> <pre><code>public static class FolderTreeModel implements TreeViewModel { private final ListDataProvider&lt;Folder&gt; dataProvider; private final CellPreviewEvent.Handler&lt;Folder&gt; folderSelectionHandler; public FolderTreeModel(List&lt;Folder&gt; folders, CellPreviewEvent.Handler&lt;Folder&gt; folderSelectionHandler) { this.folderSelectionHandler = folderSelectionHandler; dataProvider = new ListDataProvider&lt;Folder&gt;(folders); } @Override public &lt;T&gt; TreeViewModel.NodeInfo&lt;?&gt; getNodeInfo(T value) { return new DefaultNodeInfo&lt;Folder&gt;(dataProvider, new AbstractCell&lt;Folder&gt;() { // simple renderer that renders folder name @Override public void render(Context context, Folder value, SafeHtmlBuilder sb) { sb.appendEscaped(value.getName()); } }, new SingleSelectionModel&lt;Folder&gt;(), // using single selection model folderSelectionHandler, // add handler to the node info null); // value updater can be null } @Override public boolean isLeaf(Object value) { return false; // I will say that every node is not leaf for simplicity } } </code></pre> <p>And your BinderOwner class:</p> <pre><code>public static class BinderOwner { @UiField(provided = true) CellTree folderTree; @UiField Label folderName; //your other UI element that you will change: show the name of selected folder public BinderOwner() { //List of folders to show something ArrayList&lt;Folder&gt; folders = new ArrayList&lt;Folder&gt;(); folders.add(new Folder("A")); folders.add(new Folder("B")); folders.add(new Folder("C")); // define folder tree folderTree = new CellTree(new FolderTreeModel(folders, new CellPreviewEvent.Handler&lt;Folder&gt;() { // this is your handler @Override public void onCellPreview(CellPreviewEvent&lt;Folder&gt; event) { // set folder name to label on folder selection folderName.setText(event.getValue().getName()); } }), null); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload