Version 2.0.0: update sources
[jvcard.git] / src / com / googlecode / lanterna / gui2 / dialogs / FileDialog.java
diff --git a/src/com/googlecode/lanterna/gui2/dialogs/FileDialog.java b/src/com/googlecode/lanterna/gui2/dialogs/FileDialog.java
deleted file mode 100644 (file)
index a2173ad..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-package com.googlecode.lanterna.gui2.dialogs;
-
-import com.googlecode.lanterna.TerminalTextUtils;
-import com.googlecode.lanterna.TerminalSize;
-import com.googlecode.lanterna.gui2.*;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * Dialog that allows the user to iterate the file system and pick file to open/save
- *
- * @author Martin
- */
-public class FileDialog extends DialogWindow {
-
-    private final ActionListBox fileListBox;
-    private final ActionListBox directoryListBox;
-    private final TextBox fileBox;
-    private final Button okButton;
-    private final boolean showHiddenFilesAndDirs;
-
-    private File directory;
-    private File selectedFile;
-
-    /**
-     * Default constructor for {@code FileDialog}
-     * @param title Title of the dialog
-     * @param description Description of the dialog, is displayed at the top of the content area
-     * @param actionLabel Label to use on the "confirm" button, for example "open" or "save"
-     * @param dialogSize Rough estimation of how big you want the dialog to be
-     * @param showHiddenFilesAndDirs If {@code true}, hidden files and directories will be visible
-     * @param selectedObject Initially selected file node
-     */
-    public FileDialog(
-            String title,
-            String description,
-            String actionLabel,
-            TerminalSize dialogSize,
-            boolean showHiddenFilesAndDirs,
-            File selectedObject) {
-        super(title);
-        this.selectedFile = null;
-        this.showHiddenFilesAndDirs = showHiddenFilesAndDirs;
-
-        if(selectedObject == null || !selectedObject.exists()) {
-            selectedObject = new File("").getAbsoluteFile();
-        }
-        selectedObject = selectedObject.getAbsoluteFile();
-
-        Panel contentPane = new Panel();
-        contentPane.setLayoutManager(new GridLayout(2));
-
-        if(description != null) {
-            new Label(description)
-                    .setLayoutData(
-                            GridLayout.createLayoutData(
-                                    GridLayout.Alignment.BEGINNING,
-                                    GridLayout.Alignment.CENTER,
-                                    false,
-                                    false,
-                                    2,
-                                    1))
-                    .addTo(contentPane);
-        }
-
-        int unitWidth = dialogSize.getColumns() / 3;
-        int unitHeight = dialogSize.getRows();
-
-        new FileSystemLocationLabel()
-                .setLayoutData(GridLayout.createLayoutData(
-                        GridLayout.Alignment.FILL,
-                        GridLayout.Alignment.CENTER,
-                        true,
-                        false,
-                        2,
-                        1))
-                .addTo(contentPane);
-
-        fileListBox = new ActionListBox(new TerminalSize(unitWidth * 2, unitHeight));
-        fileListBox.withBorder(Borders.singleLine())
-                .setLayoutData(GridLayout.createLayoutData(
-                        GridLayout.Alignment.BEGINNING,
-                        GridLayout.Alignment.CENTER,
-                        false,
-                        false))
-                .addTo(contentPane);
-        directoryListBox = new ActionListBox(new TerminalSize(unitWidth, unitHeight));
-        directoryListBox.withBorder(Borders.singleLine())
-                .addTo(contentPane);
-
-        fileBox = new TextBox()
-                .setLayoutData(GridLayout.createLayoutData(
-                        GridLayout.Alignment.FILL,
-                        GridLayout.Alignment.CENTER,
-                        true,
-                        false,
-                        2,
-                        1))
-                .addTo(contentPane);
-
-        new Separator(Direction.HORIZONTAL)
-                .setLayoutData(
-                        GridLayout.createLayoutData(
-                                GridLayout.Alignment.FILL,
-                                GridLayout.Alignment.CENTER,
-                                true,
-                                false,
-                                2,
-                                1))
-                .addTo(contentPane);
-
-        okButton = new Button(actionLabel, new OkHandler());
-        Panels.grid(2,
-                okButton,
-                new Button(LocalizedString.Cancel.toString(), new CancelHandler()))
-                .setLayoutData(GridLayout.createLayoutData(GridLayout.Alignment.END, GridLayout.Alignment.CENTER, false, false, 2, 1))
-                .addTo(contentPane);
-
-        if(selectedObject.isFile()) {
-            directory = selectedObject.getParentFile();
-            fileBox.setText(selectedObject.getName());
-        }
-        else if(selectedObject.isDirectory()) {
-            directory = selectedObject;
-        }
-
-        reloadViews(directory);
-        setComponent(contentPane);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @param textGUI Text GUI to add the dialog to
-     * @return The file which was selected in the dialog or {@code null} if the dialog was cancelled
-     */
-    @Override
-    public File showDialog(WindowBasedTextGUI textGUI) {
-        selectedFile = null;
-        super.showDialog(textGUI);
-        return selectedFile;
-    }
-
-    private class OkHandler implements Runnable {
-        @Override
-        public void run() {
-            if(!fileBox.getText().isEmpty()) {
-                selectedFile = new File(directory, fileBox.getText());
-                close();
-            }
-            else {
-                MessageDialog.showMessageDialog(getTextGUI(), "Error", "Please select a valid file name", MessageDialogButton.OK);
-            }
-        }
-    }
-
-    private class CancelHandler implements Runnable {
-        @Override
-        public void run() {
-            selectedFile = null;
-            close();
-        }
-    }
-
-    private class DoNothing implements Runnable {
-        @Override
-        public void run() {
-        }
-    }
-
-    private void reloadViews(final File directory) {
-        directoryListBox.clearItems();
-        fileListBox.clearItems();
-        File []entries = directory.listFiles();
-        if(entries == null) {
-            return;
-        }
-        Arrays.sort(entries, new Comparator<File>() {
-            @Override
-            public int compare(File o1, File o2) {
-                return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
-            }
-        });
-        directoryListBox.addItem("..", new Runnable() {
-            @Override
-            public void run() {
-                FileDialog.this.directory = directory.getAbsoluteFile().getParentFile();
-                reloadViews(directory.getAbsoluteFile().getParentFile());
-            }
-        });
-        for(final File entry: entries) {
-            if(entry.isHidden() && !showHiddenFilesAndDirs) {
-                continue;
-            }
-            if(entry.isDirectory()) {
-                directoryListBox.addItem(entry.getName(), new Runnable() {
-                    @Override
-                    public void run() {
-                        FileDialog.this.directory = entry;
-                        reloadViews(entry);
-                    }
-                });
-            }
-            else {
-                fileListBox.addItem(entry.getName(), new Runnable() {
-                    @Override
-                    public void run() {
-                        fileBox.setText(entry.getName());
-                        setFocusedInteractable(okButton);
-                    }
-                });
-            }
-        }
-        if(fileListBox.isEmpty()) {
-            fileListBox.addItem("<empty>", new DoNothing());
-        }
-    }
-
-    private class FileSystemLocationLabel extends Label {
-        public FileSystemLocationLabel() {
-            super("");
-            setPreferredSize(TerminalSize.ONE);
-        }
-
-        @Override
-        public void onBeforeDrawing() {
-            TerminalSize area = getSize();
-            String absolutePath = directory.getAbsolutePath();
-            int absolutePathLengthInColumns = TerminalTextUtils.getColumnWidth(absolutePath);
-            if(area.getColumns() < absolutePathLengthInColumns) {
-                absolutePath = absolutePath.substring(absolutePathLengthInColumns - area.getColumns());
-                absolutePath = "..." + absolutePath.substring(Math.min(absolutePathLengthInColumns, 3));
-            }
-            setText(absolutePath);
-        }
-    }
-}