package com.revolsys.swing.tree.node.file;
import java.io.File;
import javax.swing.JFileChooser;
import com.revolsys.io.connection.ConnectionRegistry;
import com.revolsys.io.file.FileConnectionManager;
import com.revolsys.io.file.FolderConnection;
import com.revolsys.io.file.FolderConnectionRegistry;
import com.revolsys.swing.Borders;
import com.revolsys.swing.SwingUtil;
import com.revolsys.swing.component.ValueField;
import com.revolsys.swing.field.FileField;
import com.revolsys.swing.field.TextField;
import com.revolsys.swing.layout.GroupLayouts;
import com.revolsys.swing.menu.MenuFactory;
import com.revolsys.swing.tree.BaseTreeNode;
import com.revolsys.swing.tree.TreeNodes;
import com.revolsys.swing.tree.node.ConnectionManagerTrees;
public class FolderConnectionsTrees extends ConnectionManagerTrees {
static {
// FolderConnectionRegistry
final MenuFactory connectionRegistryMenu = MenuFactory.getMenu(FolderConnectionRegistry.class);
TreeNodes.addMenuItemNodeValue(connectionRegistryMenu, "default", 0, "Add Connection",
"folder:add", ConnectionRegistry::isEditable, FolderConnectionsTrees::addConnection);
TreeNodes.addMenuItemNodeValue(connectionRegistryMenu, "default", 1, "Import Connection...",
"folder:import", FolderConnectionRegistry::isEditable,
FolderConnectionsTrees::importConnection);
// FolderConnection
final MenuFactory connectionMenu = MenuFactory.getMenu(FolderConnection.class);
TreeNodes.<FolderConnection> addMenuItemNodeValue(connectionMenu, "default", 1,
"Export Connection", "folder:export", ConnectionManagerTrees::exportConnection);
}
private static void addConnection(final FolderConnectionRegistry registry) {
final ValueField panel = new ValueField();
panel.setTitle("Add Folder Connection");
Borders.titled(panel, "Folder Connection");
SwingUtil.addLabel(panel, "Name");
final TextField nameField = new TextField(20);
panel.add(nameField);
SwingUtil.addLabel(panel, "Folder");
final FileField folderField = new FileField(JFileChooser.DIRECTORIES_ONLY);
panel.add(folderField);
GroupLayouts.makeColumns(panel, 2, true);
panel.showDialog();
if (panel.isSaved()) {
final File file = folderField.getFile();
if (file != null && file.exists()) {
registry.addConnection(nameField.getText(), file);
}
}
}
public static BaseTreeNode newFolderConnectionsTreeNode() {
final FileConnectionManager connectionManager = FileConnectionManager.get();
final BaseTreeNode node = BaseTreeNode.newTreeNode(connectionManager);
node.setOpen(true);
return node;
}
}