org.dtangler.swingui.groupselector.impl.SwingGroupView.java Source code

Java tutorial

Introduction

Here is the source code for org.dtangler.swingui.groupselector.impl.SwingGroupView.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.groupselector.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.JComponent;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

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 SwingGroupView extends SwingBaseView implements GroupView {

    private final JButton okBtn;
    private final JButton cancelBtn;
    private final JButton addItemBtn;
    private final JButton removeItemBtn;
    private final JList items = new JList();
    private final JButton addExludedItemBtn;
    private final JButton removeExcludedItemBtn;
    private final JList excludedItems = new JList();
    private final JTextField name = new JTextField();

    protected SwingGroupView(ActionFactory actionFactory) {
        super(actionFactory);
        cancelBtn = createButton("Cancel", Actions.cancel);
        okBtn = createButton("Ok", Actions.ok);
        name.setName("nameField");
        name.getDocument().addDocumentListener(createDocumentChangeAdapter(Actions.updateActionStates));

        addItemBtn = createButton("Add...", Actions.addItem, IconKey.plus12);
        removeItemBtn = createButton("Remove", Actions.removeItems, IconKey.minus12);
        items.setName("itemsField");
        items.getSelectionModel()
                .addListSelectionListener(createSelectionActionAdapter(Actions.updateActionStates));
        addExludedItemBtn = createButton("Add...", Actions.addExcludedItem, IconKey.plus12);
        removeExcludedItemBtn = createButton("Remove", Actions.removeExcludedItems, IconKey.minus12);
        excludedItems.setName("excludedItemsField");
        excludedItems.getSelectionModel()
                .addListSelectionListener(createSelectionActionAdapter(Actions.updateActionStates));
        items.addKeyListener(new KeyActionAdapter(KeyEvent.VK_INSERT, actionFactory.getAction(Actions.addItem)));
        items.addKeyListener(
                new KeyActionAdapter(KeyEvent.VK_DELETE, actionFactory.getAction(Actions.removeItems)));
        excludedItems.addKeyListener(
                new KeyActionAdapter(KeyEvent.VK_INSERT, actionFactory.getAction(Actions.addExcludedItem)));
        excludedItems.addKeyListener(
                new KeyActionAdapter(KeyEvent.VK_DELETE, actionFactory.getAction(Actions.removeExcludedItems)));

    }

    @Override
    protected JComponent buildViewComponent() {
        DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("fill:100dlu:grow",
                "p,2dlu,p,8dlu,p,2dlu,fill:60dlu:grow,8dlu,p,2dlu,fill:60dlu:grow,4dlu,p"));
        builder.setDefaultDialogBorder();
        builder.appendSeparator("Name * ");
        builder.nextRow();
        builder.append(name);
        builder.nextRow();
        builder.appendSeparator("Included items * (wildcards allowed)");
        builder.nextRow();
        builder.append(createItemsPanel(items, addItemBtn, removeItemBtn));
        builder.nextRow();
        builder.appendSeparator("Excluded items (Overwrites included items, wildcards allowed)");
        builder.nextRow();
        builder.append(createItemsPanel(excludedItems, addExludedItemBtn, removeExcludedItemBtn));
        builder.nextRow();
        builder.append(ButtonBarFactory.buildRightAlignedBar(okBtn, cancelBtn));
        JPanel panel = builder.getPanel();
        addCommonKeyEvent(panel, KeyEvent.VK_ENTER, Actions.ok);
        addCommonKeyEvent(panel, KeyEvent.VK_ESCAPE, Actions.cancel);
        return panel;
    }

    private JPanel createItemsPanel(JList list, JButton... buttons) {
        DefaultFormBuilder builder = new DefaultFormBuilder(
                new FormLayout("fill:10dlu:grow,4dlu,p", "fill:60dlu:grow"));
        builder.append(new JScrollPane(list), createButtonStack(buttons));
        return builder.getPanel();

    }

    public Dimension getPreferredSize() {
        return new Dimension(420, 380);
    }

    public String getTitle() {
        return "New Group";
    }

    public String getName() {
        return name.getText();
    }

    public void setName(String name) {
        this.name.setText(name);
    }

    public void setItems(List<String> items) {
        this.items.setListData(items.toArray());
    }

    public void setExcludedItems(List<String> excludedItems) {
        this.excludedItems.setListData(excludedItems.toArray());
    }

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

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