org.dtangler.swingui.fileinput.impl.SwingFileInputSelectorView.java Source code

Java tutorial

Introduction

Here is the source code for org.dtangler.swingui.fileinput.impl.SwingFileInputSelectorView.java

Source

//This product is provided under the terms of EPL (Eclipse Public License) 
//version 1.0.
//
//The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php

package org.dtangler.swingui.fileinput.impl;

import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JScrollPane;

import org.dtangler.swingui.actionfactory.ActionFactory;
import org.dtangler.swingui.actionfactory.KeyActionAdapter;
import org.dtangler.swingui.resource.icons.IconKey;
import org.dtangler.swingui.windowmanager.SwingBaseView;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.FormLayout;

public class SwingFileInputSelectorView extends SwingBaseView implements FileInputSelectorView {

    private final JComboBox engineCombo = new JComboBox();
    private final JList paths = new JList();
    private final JList masks = new JList();
    private final JButton addPathBtn;
    private final JButton removePathBtn;
    private final JButton addMaskBtn;
    private final JButton removeMaskBtn;
    private final JButton okBtn;
    private final JButton cancelBtn;

    public SwingFileInputSelectorView(ActionFactory actionFactory) {
        super(actionFactory);
        addPathBtn = createButton("Add...", Actions.addPath, IconKey.plus12);
        removePathBtn = createButton("Remove", Actions.removePath, IconKey.minus12);
        addMaskBtn = createButton("Add...", Actions.addMask, IconKey.plus12);
        removeMaskBtn = createButton("Remove", Actions.removeMask, IconKey.minus12);
        okBtn = createButton("OK", Actions.ok);
        cancelBtn = createButton("Cancel", Actions.cancel);
        engineCombo.setName("engineCombo");
        engineCombo.addActionListener(actionFactory.getAction(Actions.selectEngine));
        paths.getSelectionModel()
                .addListSelectionListener(createSelectionActionAdapter(Actions.updateActionStates));
        paths.addKeyListener(new KeyActionAdapter(KeyEvent.VK_INSERT, actionFactory.getAction(Actions.addPath)));
        paths.addKeyListener(new KeyActionAdapter(KeyEvent.VK_DELETE, actionFactory.getAction(Actions.removePath)));
        masks.getSelectionModel()
                .addListSelectionListener(createSelectionActionAdapter(Actions.updateActionStates));
        masks.addKeyListener(new KeyActionAdapter(KeyEvent.VK_INSERT, actionFactory.getAction(Actions.addMask)));
        masks.addKeyListener(new KeyActionAdapter(KeyEvent.VK_DELETE, actionFactory.getAction(Actions.removeMask)));
        paths.setName("PATHS");
        masks.setName("MASKS");
        addCommonKeyEvent(getViewComponent(), KeyEvent.VK_ENTER, Actions.ok);
        addCommonKeyEvent(getViewComponent(), KeyEvent.VK_ESCAPE, Actions.cancel);
    }

    protected JComponent buildViewComponent() {
        DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("fill:10dlu:grow",
                "p,1dlu,p,8dlu,p,fill:20dlu:grow,2dlu,p,8dlu,p,fill:20dlu:grow,2dlu,p,8dlu,p"));
        builder.setDefaultDialogBorder();
        builder.appendSeparator("Dependency engine");
        builder.nextRow();
        builder.append(engineCombo);
        builder.nextRow();
        builder.appendSeparator("Directories or files to search from");
        builder.append(new JScrollPane(paths));
        builder.nextRow();
        builder.append(ButtonBarFactory.buildLeftAlignedBar(addPathBtn, removePathBtn));
        builder.nextRow();
        builder.appendSeparator("Filename masks to ignore");
        builder.append(new JScrollPane(masks));
        builder.nextRow();
        builder.append(ButtonBarFactory.buildLeftAlignedBar(addMaskBtn, removeMaskBtn));
        builder.nextRow();
        builder.append(ButtonBarFactory.buildRightAlignedBar(okBtn, cancelBtn));
        return builder.getPanel();
    }

    public void setMasks(List<String> masks) {
        this.masks.setListData(masks.toArray());
    }

    public void setEngines(List<String> engines) {
        this.engineCombo.removeAllItems();
        if (engines == null)
            return;
        for (String engine : engines)
            this.engineCombo.addItem(engine);
    }

    public void setEngineSelection(String engine) {
        engineCombo.setSelectedItem(engine);
    }

    public String getEngineSelection() {
        return (String) engineCombo.getSelectedItem();
    }

    public void setPaths(List<String> paths) {
        this.paths.setListData(paths.toArray());
    }

    public List<String> getMaskSelection() {
        return new ArrayList(Arrays.asList(masks.getSelectedValues()));
    }

    public List<String> getPathSelection() {
        return new ArrayList(Arrays.asList(paths.getSelectedValues()));
    }

    public Dimension getPreferredSize() {
        return new Dimension(350, 400);
    }

    public String getTitle() {
        return "Select input data";
    }

}