From: <jde...@us...> - 2012-02-09 08:36:59
|
Revision: 16117 http://pcgen.svn.sourceforge.net/pcgen/?rev=16117&view=rev Author: jdempsey Date: 2012-02-09 08:36:48 +0000 (Thu, 09 Feb 2012) Log Message: ----------- Choosers - Add support for add/remove on double click Issue#: CODE-1223 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ChooserDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/LanguageChooserDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableEx.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/gui2/util/JListEx.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ChooserDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ChooserDialog.java 2012-02-08 22:32:17 UTC (rev 16116) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ChooserDialog.java 2012-02-09 08:36:48 UTC (rev 16117) @@ -39,7 +39,6 @@ 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.JSplitPane; @@ -54,6 +53,7 @@ import pcgen.core.facade.util.ListFacade; import pcgen.gui2.tools.Icons; import pcgen.gui2.util.FacadeListModel; +import pcgen.gui2.util.JListEx; import pcgen.gui2.util.JTreeViewTable; import pcgen.gui2.util.treeview.DataView; import pcgen.gui2.util.treeview.DataViewColumn; @@ -86,7 +86,7 @@ private final JLabel remainingLabel; private final GeneralTreeViewModel treeViewModel; private final FacadeListModel<InfoFacade> listModel; - private final JList list; + private final JListEx list; private boolean committed; /** @@ -101,7 +101,7 @@ this.availTable = new JTreeViewTable<InfoFacade>(); this.remainingLabel = new JLabel(); this.treeViewModel = new GeneralTreeViewModel(); - this.list = new JList(); + this.list = new JListEx(); this.listModel = new FacadeListModel<InfoFacade>(); treeViewModel.setDelegate(chooser.getAvailableList()); @@ -134,6 +134,7 @@ JPanel leftPane = new JPanel(new BorderLayout()); //leftPane.add(new JLabel("Available Languages"), BorderLayout.NORTH); availTable.setTreeViewModel(treeViewModel); + availTable.addActionListener(this); leftPane.add(new JScrollPane(availTable), BorderLayout.CENTER); JPanel buttonPane1 = new JPanel(new FlowLayout()); @@ -159,6 +160,7 @@ list.setModel(listModel); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + list.addActionListener(this); rightPane.add(new JScrollPane(list), BorderLayout.CENTER); JPanel buttonPane2 = new JPanel(new FlowLayout()); @@ -190,7 +192,7 @@ public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("ADD")) + if (e.getActionCommand().equals("ADD") || e.getSource() == availTable) { List<Object> data = availTable.getSelectedData(); if (!data.isEmpty() && data.get(0) instanceof InfoFacade) @@ -199,7 +201,7 @@ } return; } - if (e.getActionCommand().equals("REMOVE")) + if (e.getActionCommand().equals("REMOVE") || e.getSource() == list) { Object value = list.getSelectedValue(); if (value != null && value instanceof InfoFacade) Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/LanguageChooserDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/LanguageChooserDialog.java 2012-02-08 22:32:17 UTC (rev 16116) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/LanguageChooserDialog.java 2012-02-09 08:36:48 UTC (rev 16117) @@ -33,14 +33,15 @@ import java.util.ArrayList; import java.util.Collections; 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.JSplitPane; import javax.swing.ListSelectionModel; + import pcgen.core.facade.LanguageChooserFacade; import pcgen.core.facade.LanguageFacade; import pcgen.core.facade.event.ReferenceEvent; @@ -50,6 +51,7 @@ import pcgen.core.facade.util.ListFacade; import pcgen.gui2.tools.Icons; import pcgen.gui2.util.FacadeListModel; +import pcgen.gui2.util.JListEx; import pcgen.gui2.util.JTreeViewTable; import pcgen.gui2.util.treeview.DataView; import pcgen.gui2.util.treeview.DataViewColumn; @@ -69,7 +71,7 @@ private final JLabel remainingLabel; private final LangTreeViewModel treeViewModel; private final FacadeListModel<LanguageFacade> listModel; - private final JList list; + private final JListEx list; public LanguageChooserDialog(Frame frame, LanguageChooserFacade chooser) { @@ -78,7 +80,7 @@ this.availTable = new JTreeViewTable(); this.remainingLabel = new JLabel(); this.treeViewModel = new LangTreeViewModel(); - this.list = new JList(); + this.list = new JListEx(); this.listModel = new FacadeListModel<LanguageFacade>(); treeViewModel.setDelegate(chooser.getAvailableList()); @@ -111,6 +113,7 @@ JPanel leftPane = new JPanel(new BorderLayout()); //leftPane.add(new JLabel("Available Languages"), BorderLayout.NORTH); availTable.setTreeViewModel(treeViewModel); + availTable.addActionListener(this); leftPane.add(new JScrollPane(availTable), BorderLayout.CENTER); JPanel buttonPane1 = new JPanel(new FlowLayout()); @@ -136,6 +139,7 @@ list.setModel(listModel); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + list.addActionListener(this); rightPane.add(new JScrollPane(list), BorderLayout.CENTER); JPanel buttonPane2 = new JPanel(new FlowLayout()); @@ -167,7 +171,7 @@ public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("ADD")) + if (e.getActionCommand().equals("ADD") || e.getSource() == availTable) { List<Object> data = availTable.getSelectedData(); if (!data.isEmpty()) @@ -176,7 +180,7 @@ } return; } - if (e.getActionCommand().equals("REMOVE")) + if (e.getActionCommand().equals("REMOVE") || e.getSource() == list) { Object value = list.getSelectedValue(); if (value != null) Added: Trunk/pcgen/code/src/java/pcgen/gui2/util/JListEx.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JListEx.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JListEx.java 2012-02-09 08:36:48 UTC (rev 16117) @@ -0,0 +1,116 @@ +/* + * JListEx.java + * Copyright James Dempsey, 2012 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 09/02/2012 7:06:02 PM + * + * $Id$ + */ +package pcgen.gui2.util; + +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.JList; + +/** + * The Class <code>JListEx</code> extends JList to provide double click events. + * + * <br/> + * Last Editor: $Author$ + * Last Edited: $Date$ + * + * @author James Dempsey <jde...@us...> + * @version $Revision$ + */ + +public class JListEx extends JList +{ + /** Constant for a double click action event. */ + public static final int ACTION_DOUBLECLICK = 2051; + + + /** + * Create a new instance of JListEx + */ + public JListEx() + { + installDoubleCLickListener(); + } + + private void installDoubleCLickListener() + { + addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + if (e.getComponent().isEnabled() && e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) + { + Point p = e.getPoint(); + int row = locationToIndex(p); + Object value = getModel().getElementAt(row); + fireActionEvent(JListEx.this, ACTION_DOUBLECLICK, String.valueOf(value)); + } + } + }); + } + + + private void fireActionEvent(Object value, int id, String command) + { + ActionEvent e = null; + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length - 2; i >= 0; i -= 2) + { + if (listeners[i] == ActionListener.class) + { + // Lazily create the event: + if (e == null) + { + e = new ActionEvent(value, id, command); + } + + ((ActionListener) listeners[i + 1]).actionPerformed(e); + } + } + } + + /** + * Add a new listener to be informed of double click actions. + * @param listener The new listening class + */ + public void addActionListener(ActionListener listener) + { + listenerList.add(ActionListener.class, listener); + } + + /** + * Remove a listener to no longer be informed of double click actions. + * @param listener The existing listening class + */ + public void removeActionListener(ActionListener listener) + { + listenerList.remove(ActionListener.class, listener); + } + +} Property changes on: Trunk/pcgen/code/src/java/pcgen/gui2/util/JListEx.java ___________________________________________________________________ Added: svn:keywords + Date Author Revision Id Added: svn:eol-style + native Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableEx.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableEx.java 2012-02-08 22:32:17 UTC (rev 16116) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableEx.java 2012-02-09 08:36:48 UTC (rev 16117) @@ -56,7 +56,9 @@ { private static final long serialVersionUID = 514835142307946415L; - protected static final int ACTION_DOUBLECLICK = 2042; + + /** Constant for a double click action event. */ + public static final int ACTION_DOUBLECLICK = 2042; private final RowComparator rowComparator = new RowComparator(); private List<SortingPriority> columnkeys; private boolean isSorting = false; @@ -120,7 +122,7 @@ int row = convertRowIndexToModel(rowAtPoint(p)); int column = convertColumnIndexToModel(columnAtPoint(p)); Object value = getModel().getValueAt(row, column); - fireActionEvent(this, ACTION_DOUBLECLICK, String.valueOf(value)); + fireActionEvent(JTableEx.this, ACTION_DOUBLECLICK, String.valueOf(value)); } } }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |