All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cedarsoft.spring.rcp.tree.layered.LayeredTreeFactory Maven / Gradle / Ivy

package com.cedarsoft.spring.rcp.tree.layered;

import com.cedarsoft.spring.rcp.selection.SelectionModel;
import com.cedarsoft.spring.rcp.tree.SelectionModelBridge;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.JTree;
import java.awt.Dimension;

/**
 *
 */
public class LayeredTreeFactory {
  @NotNull
  private final LayersConfiguration layersConfiguration;

  private Dimension preferredSize = new Dimension( 400, 150 );

  @Nullable
  private SelectionModel selectionModel;

  public LayeredTreeFactory( @NotNull LayersConfiguration layersConfiguration ) {
    this.layersConfiguration = layersConfiguration;
  }

  public void setSelectionModel( @Nullable SelectionModel selectionModel ) {
    this.selectionModel = selectionModel;
  }

  @Nullable
  public SelectionModel getSelectionModel() {
    return selectionModel;
  }

  @NotNull
  public LayersConfiguration getLayersConfiguration() {
    return layersConfiguration;
  }

  @NotNull
  public JTree createTree( @NotNull T root ) {
    final LayeredTreeModel treeModel = new LayeredTreeModel( root, layersConfiguration );

    final JTree tree = new JTree( treeModel );
    if ( selectionModel != null ) {
      //noinspection ConstantConditions
      SelectionModelBridge.connect( selectionModel, tree.getSelectionModel() );
    }

    tree.setPreferredSize( preferredSize );

    tree.addMouseListener( new LayeredDoubleClickListener( layersConfiguration ) );
    tree.addMouseListener( new LayeredPopupListener( layersConfiguration ) );
    return tree;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy