/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.tools.script; /* * #%L * script-filter * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.List; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * ScriptSelectDialog * * @author dangleton * */ public class SelectDialog<SELECTION_TYPE extends Object> extends JDialog { private static final long serialVersionUID = 1L; private JList list; private JButton okBT; private SELECTION_TYPE selectedObject; /** * @param arg0 */ public SelectDialog(Frame f, List<SELECTION_TYPE> externalScripts) { super(f, true); setLayout(new BorderLayout()); list = new JList(externalScripts.toArray()); list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { okBT.setEnabled(list.getSelectedIndex() != -1); } }); list.addMouseListener(new MouseAdapter() { /** * @{inheritDoc */ @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { select(); } } }); add(new JLabel("Select a script."), BorderLayout.NORTH); JScrollPane sp = new JScrollPane(list); add(sp, BorderLayout.CENTER); add(createButtonPanel(), BorderLayout.SOUTH); setSize(new Dimension(400, 500)); setBounds(new Rectangle(getSize())); setPreferredSize(getSize()); WindowUtil.centerOnParent(this); } /** * @return the selectedScript */ public SELECTION_TYPE getSelectedObject() { return selectedObject; } /** * @{inheritDoc */ @Override public void setVisible(boolean b) { if (b) { selectedObject = null; } super.setVisible(b); } /** * @return */ private Component createButtonPanel() { JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEADING, 10, 5)); JButton cancelBT = new JButton("Cancel"); cancelBT.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { setVisible(false); } }); okBT = new JButton("Ok"); okBT.addActionListener(new ActionListener() { @SuppressWarnings("unchecked") public void actionPerformed(ActionEvent arg0) { select(); } }); panel.add(okBT); panel.add(cancelBT); return panel; } /** * */ private void select() { selectedObject = (SELECTION_TYPE) list.getSelectedValue(); if (selectedObject != null) { setVisible(false); } } }