diff --git a/source/net/sourceforge/filebot/ui/AbstractSearchPanel.java b/source/net/sourceforge/filebot/ui/AbstractSearchPanel.java index cb9838ca..3b470c64 100644 --- a/source/net/sourceforge/filebot/ui/AbstractSearchPanel.java +++ b/source/net/sourceforge/filebot/ui/AbstractSearchPanel.java @@ -9,6 +9,7 @@ import static net.sourceforge.tuned.ui.TunedUtilities.*; import java.awt.Dimension; import java.awt.Window; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.net.URI; import java.util.Arrays; import java.util.Collection; @@ -30,11 +31,6 @@ import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import ca.odell.glazedlists.BasicEventList; -import ca.odell.glazedlists.EventList; -import ca.odell.glazedlists.matchers.TextMatcherEditor; -import ca.odell.glazedlists.swing.AutoCompleteSupport; - import net.miginfocom.swing.MigLayout; import net.sourceforge.filebot.ResourceManager; import net.sourceforge.filebot.Settings; @@ -43,6 +39,10 @@ import net.sourceforge.filebot.web.SearchResult; import net.sourceforge.tuned.ExceptionUtilities; import net.sourceforge.tuned.ListChangeSynchronizer; import net.sourceforge.tuned.ui.LabelProvider; +import ca.odell.glazedlists.BasicEventList; +import ca.odell.glazedlists.EventList; +import ca.odell.glazedlists.matchers.TextMatcherEditor; +import ca.odell.glazedlists.swing.AutoCompleteSupport; public abstract class AbstractSearchPanel extends JComponent { @@ -57,7 +57,7 @@ public abstract class AbstractSearchPanel extends JComponent { protected final EventList searchHistory = createSearchHistory(); - + public AbstractSearchPanel() { historyPanel.setColumnHeader(2, "Duration"); @@ -99,22 +99,22 @@ public abstract class AbstractSearchPanel extends JComponent { AutoCompleteSupport.install(searchTextField.getEditor(), searchHistory).setFilterMode(TextMatcherEditor.CONTAINS); - installAction(this, KeyStroke.getKeyStroke("ENTER"), searchAction); + installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), searchAction); } - + protected abstract S[] getSearchEngines(); - + protected abstract LabelProvider getSearchEngineLabelProvider(); - + protected abstract Settings getSettings(); - + protected abstract RequestProcessor createRequestProcessor(); - + private void search(RequestProcessor requestProcessor) { FileBotTab tab = requestProcessor.tab; @@ -130,7 +130,7 @@ public abstract class AbstractSearchPanel extends JComponent { new SearchTask(requestProcessor).execute(); } - + protected EventList createSearchHistory() { // create in-memory history BasicEventList history = new BasicEventList(); @@ -148,9 +148,9 @@ public abstract class AbstractSearchPanel extends JComponent { return history; } - private final AbstractAction searchAction = new AbstractAction("Find", ResourceManager.getIcon("action.find")) { + @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == null) { // command triggered by auto-completion @@ -161,17 +161,17 @@ public abstract class AbstractSearchPanel extends JComponent { } }; - + private class SearchTask extends SwingWorker, Void> { private final RequestProcessor requestProcessor; - + public SearchTask(RequestProcessor requestProcessor) { this.requestProcessor = requestProcessor; } - + @Override protected Collection doInBackground() throws Exception { long start = System.currentTimeMillis(); @@ -183,7 +183,7 @@ public abstract class AbstractSearchPanel extends JComponent { } } - + @Override public void done() { FileBotTab tab = requestProcessor.tab; @@ -235,17 +235,17 @@ public abstract class AbstractSearchPanel extends JComponent { } } - + private class FetchTask extends SwingWorker, Void> { private final RequestProcessor requestProcessor; - + public FetchTask(RequestProcessor requestProcessor) { this.requestProcessor = requestProcessor; } - + @Override protected final Collection doInBackground() throws Exception { long start = System.currentTimeMillis(); @@ -257,7 +257,7 @@ public abstract class AbstractSearchPanel extends JComponent { } } - + @Override public void done() { FileBotTab tab = requestProcessor.tab; @@ -291,24 +291,24 @@ public abstract class AbstractSearchPanel extends JComponent { } } - + protected static class Request { private final String searchText; - + public Request(String searchText) { this.searchText = searchText; } - + public String getSearchText() { return searchText; } } - + protected abstract static class RequestProcessor { protected final R request; @@ -319,45 +319,45 @@ public abstract class AbstractSearchPanel extends JComponent { private long duration = 0; - + public RequestProcessor(R request, JComponent component) { this.request = request; this.tab = new FileBotTab(component); } - + public abstract Collection search() throws Exception; - + public abstract Collection fetch() throws Exception; - + public abstract void process(Collection elements); - + public abstract URI getLink(); - + public JComponent getComponent() { return tab.getComponent(); } - + public SearchResult getSearchResult() { return searchResult; } - + public void setSearchResult(SearchResult searchResult) { this.searchResult = searchResult; } - + public String getStatusMessage(Collection result) { return String.format("%d elements found", result.size()); } - + public String getTitle() { if (searchResult != null) return searchResult.getName(); @@ -365,7 +365,7 @@ public abstract class AbstractSearchPanel extends JComponent { return request.getSearchText(); } - + public String getHistoryEntry() { SeriesNameMatcher nameMatcher = new SeriesNameMatcher(); @@ -374,12 +374,12 @@ public abstract class AbstractSearchPanel extends JComponent { return nameMatcher.matchByFirstCommonWordSequence(searchResult.getName(), request.getSearchText()); } - + public Icon getIcon() { return null; } - + protected SearchResult selectSearchResult(Collection searchResults, Window window) throws Exception { // multiple results have been found, user must select one SelectDialog selectDialog = new SelectDialog(window, searchResults); @@ -391,14 +391,14 @@ public abstract class AbstractSearchPanel extends JComponent { return selectDialog.getSelectedValue(); } - + protected void configureSelectDialog(SelectDialog selectDialog) { selectDialog.setLocation(getOffsetLocation(selectDialog.getOwner())); selectDialog.setIconImage(getImage(getIcon())); selectDialog.setMinimumSize(new Dimension(250, 150)); } - + public long getDuration() { return duration; } diff --git a/source/net/sourceforge/filebot/ui/FileBotList.java b/source/net/sourceforge/filebot/ui/FileBotList.java index d28d49c9..75df6c99 100644 --- a/source/net/sourceforge/filebot/ui/FileBotList.java +++ b/source/net/sourceforge/filebot/ui/FileBotList.java @@ -4,6 +4,7 @@ package net.sourceforge.filebot.ui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; @@ -48,48 +49,48 @@ public class FileBotList extends JComponent { // Shortcut DELETE, disabled by default removeAction.setEnabled(false); - TunedUtilities.installAction(this, KeyStroke.getKeyStroke("pressed DELETE"), removeAction); - TunedUtilities.installAction(this, KeyStroke.getKeyStroke("pressed BACK_SPACE"), removeAction); + TunedUtilities.installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), removeAction); + TunedUtilities.installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), removeAction); } - + public EventList getModel() { return model; } - + public void setModel(EventList model) { this.model = model; list.setModel(new EventListModel(model)); } - + public JList getListComponent() { return list; } - + public JScrollPane getListScrollPane() { return listScrollPane; } - + @Override public DefaultTransferHandler getTransferHandler() { return (DefaultTransferHandler) list.getTransferHandler(); } - + public void setTransferablePolicy(TransferablePolicy transferablePolicy) { getTransferHandler().setTransferablePolicy(transferablePolicy); } - + public TransferablePolicy getTransferablePolicy() { return getTransferHandler().getTransferablePolicy(); } - + public void setExportHandler(TextFileExportHandler exportHandler) { getTransferHandler().setExportHandler(exportHandler); @@ -97,17 +98,17 @@ public class FileBotList extends JComponent { list.setDragEnabled(exportHandler != null); } - + public TextFileExportHandler getExportHandler() { return (TextFileExportHandler) getTransferHandler().getExportHandler(); } - + public String getTitle() { return (String) getClientProperty("title"); } - + public void setTitle(String title) { putClientProperty("title", title); @@ -119,13 +120,14 @@ public class FileBotList extends JComponent { } } - + public Action getRemoveAction() { return removeAction; } private final AbstractAction removeAction = new AbstractAction("Remove") { + @Override public void actionPerformed(ActionEvent e) { int index = list.getSelectedIndex(); Object values[] = list.getSelectedValues(); diff --git a/source/net/sourceforge/filebot/ui/SelectButtonTextField.java b/source/net/sourceforge/filebot/ui/SelectButtonTextField.java index 02c9082a..fd41c2a4 100644 --- a/source/net/sourceforge/filebot/ui/SelectButtonTextField.java +++ b/source/net/sourceforge/filebot/ui/SelectButtonTextField.java @@ -8,6 +8,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -53,27 +54,28 @@ public class SelectButtonTextField extends JComponent { editor.setRenderer(new CompletionCellRenderer()); editor.setUI(new TextFieldComboBoxUI()); - TunedUtilities.installAction(this, KeyStroke.getKeyStroke("ctrl UP"), new SpinClientAction(-1)); - TunedUtilities.installAction(this, KeyStroke.getKeyStroke("ctrl DOWN"), new SpinClientAction(1)); + TunedUtilities.installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.CTRL_MASK), new SpinClientAction(-1)); + TunedUtilities.installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KeyEvent.CTRL_MASK), new SpinClientAction(1)); } - + public String getText() { return ((TextFieldComboBoxUI) editor.getUI()).getEditor().getText(); } - + public JComboBox getEditor() { return editor; } - + public SelectButton getSelectButton() { return selectButton; } private final ActionListener textFieldFocusOnClick = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { getEditor().requestFocus(); } @@ -91,13 +93,14 @@ public class SelectButtonTextField extends JComponent { this.spin = spin; } - + + @Override public void actionPerformed(ActionEvent e) { selectButton.spinValue(spin); } } - + private class CompletionCellRenderer extends DefaultListCellRenderer { @Override @@ -128,7 +131,7 @@ public class SelectButtonTextField extends JComponent { } } - + private class TextFieldComboBoxUI extends BasicComboBoxUI { @Override @@ -136,7 +139,7 @@ public class SelectButtonTextField extends JComponent { return new JButton(ResourceManager.getIcon("action.list")); } - + @Override public void configureArrowButton() { super.configureArrowButton(); @@ -145,7 +148,7 @@ public class SelectButtonTextField extends JComponent { arrowButton.setFocusable(false); } - + @Override protected void configureEditor() { JTextComponent editor = getEditor(); @@ -164,13 +167,13 @@ public class SelectButtonTextField extends JComponent { popup.getList().repaint(); } - + @Override public void insertUpdate(DocumentEvent e) { popup.getList().repaint(); } - + @Override public void removeUpdate(DocumentEvent e) { popup.getList().repaint(); @@ -179,12 +182,12 @@ public class SelectButtonTextField extends JComponent { }); } - + public JTextComponent getEditor() { return (JTextComponent) editor; } - + @Override protected ComboPopup createPopup() { return new BasicComboPopup(comboBox) { @@ -194,7 +197,7 @@ public class SelectButtonTextField extends JComponent { super.show(invoker, x - selectButton.getWidth(), y); } - + @Override protected Rectangle computePopupBounds(int px, int py, int pw, int ph) { Rectangle bounds = super.computePopupBounds(px, py, pw, ph); @@ -205,7 +208,7 @@ public class SelectButtonTextField extends JComponent { }; } - + @Override protected FocusListener createFocusListener() { return new FocusHandler() { diff --git a/source/net/sourceforge/filebot/ui/SelectDialog.java b/source/net/sourceforge/filebot/ui/SelectDialog.java index 828414b9..30499624 100644 --- a/source/net/sourceforge/filebot/ui/SelectDialog.java +++ b/source/net/sourceforge/filebot/ui/SelectDialog.java @@ -7,6 +7,7 @@ import static net.sourceforge.tuned.ui.TunedUtilities.*; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collection; @@ -77,7 +78,7 @@ public class SelectDialog extends JDialog { setSize(new Dimension(210, 210)); // Shortcut Enter - TunedUtilities.installAction(list, KeyStroke.getKeyStroke("ENTER"), selectAction); + TunedUtilities.installAction(list, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), selectAction); } @@ -115,9 +116,9 @@ public class SelectDialog extends JDialog { return cancelAction; } - private final Action selectAction = new AbstractAction("Select", ResourceManager.getIcon("dialog.continue")) { + @Override public void actionPerformed(ActionEvent e) { valueSelected = true; close(); @@ -126,6 +127,7 @@ public class SelectDialog extends JDialog { private final Action cancelAction = new AbstractAction("Cancel", ResourceManager.getIcon("dialog.cancel")) { + @Override public void actionPerformed(ActionEvent e) { valueSelected = false; close(); diff --git a/source/net/sourceforge/filebot/ui/analyze/FileTreePanel.java b/source/net/sourceforge/filebot/ui/analyze/FileTreePanel.java index b94899e4..6e7ebc7e 100644 --- a/source/net/sourceforge/filebot/ui/analyze/FileTreePanel.java +++ b/source/net/sourceforge/filebot/ui/analyze/FileTreePanel.java @@ -5,6 +5,7 @@ package net.sourceforge.filebot.ui.analyze; import static net.sourceforge.filebot.ui.transfer.BackgroundFileTransferablePolicy.*; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -54,6 +55,7 @@ class FileTreePanel extends JComponent { // update tree when loading is finished transferablePolicy.addPropertyChangeListener(new PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { if (LOADING_PROPERTY.equals(evt.getPropertyName()) && !(Boolean) evt.getNewValue()) { fireFileTreeChange(); @@ -62,8 +64,8 @@ class FileTreePanel extends JComponent { }); // Shortcut DELETE - TunedUtilities.installAction(fileTree, KeyStroke.getKeyStroke("DELETE"), removeAction); - TunedUtilities.installAction(fileTree, KeyStroke.getKeyStroke("BACK_SPACE"), removeAction); + TunedUtilities.installAction(fileTree, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), removeAction); + TunedUtilities.installAction(fileTree, KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), removeAction); } @@ -76,11 +78,11 @@ class FileTreePanel extends JComponent { return transferablePolicy; } - private final LoadAction loadAction = new LoadAction(transferablePolicy); private final AbstractAction clearAction = new AbstractAction("Clear", ResourceManager.getIcon("action.clear")) { + @Override public void actionPerformed(ActionEvent e) { transferablePolicy.reset(); fileTree.clear(); @@ -90,6 +92,7 @@ class FileTreePanel extends JComponent { private final AbstractAction removeAction = new AbstractAction("Remove") { + @Override public void actionPerformed(ActionEvent e) { if (fileTree.getSelectionCount() < 1) return; diff --git a/source/net/sourceforge/filebot/ui/episodelist/EpisodeListPanel.java b/source/net/sourceforge/filebot/ui/episodelist/EpisodeListPanel.java index aabd30e8..b8ab83f1 100644 --- a/source/net/sourceforge/filebot/ui/episodelist/EpisodeListPanel.java +++ b/source/net/sourceforge/filebot/ui/episodelist/EpisodeListPanel.java @@ -9,6 +9,7 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -81,8 +82,8 @@ public class EpisodeListPanel extends AbstractSearchPanel matcherEditor = new TextComponentMatcherEditor(filterEditor, new TextFilterator() { @@ -176,7 +176,7 @@ class SubtitleDownloadComponent extends JComponent { return new EventListModel(source); } - + protected ListModel createFileListModel() { // source list EventList source = getFileModel(); @@ -194,7 +194,7 @@ class SubtitleDownloadComponent extends JComponent { return new EventListModel(source); } - + public void reset() { // cancel and reset download workers for (SubtitlePackage subtitle : packages) { @@ -204,29 +204,29 @@ class SubtitleDownloadComponent extends JComponent { files.clear(); } - + public EventList getPackageModel() { return packages; } - + public EventList getFileModel() { return files; } - + public void setLanguageVisible(boolean visible) { renderer.getLanguageLabel().setVisible(visible); } - + private void fetch(Object[] selection) { for (Object value : selection) { fetch((SubtitlePackage) value); } } - + private void fetch(final SubtitlePackage subtitle) { if (subtitle.getDownload().isStarted()) { // download has been started already @@ -262,7 +262,7 @@ class SubtitleDownloadComponent extends JComponent { subtitle.getDownload().start(); } - + private void open(Object[] selection) { try { for (Object object : selection) { @@ -278,7 +278,7 @@ class SubtitleDownloadComponent extends JComponent { } } - + private void open(MemoryFile file) throws IOException { SubtitleViewer viewer = new SubtitleViewer(file.getName()); viewer.getTitleLabel().setText("Subtitle Viewer"); @@ -288,7 +288,7 @@ class SubtitleDownloadComponent extends JComponent { viewer.setVisible(true); } - + private void save(Object[] selection) { try { if (selection.length == 1) { @@ -321,7 +321,7 @@ class SubtitleDownloadComponent extends JComponent { } } - + private void export(Object[] selection) { try { if (selection.length == 1) { @@ -365,7 +365,6 @@ class SubtitleDownloadComponent extends JComponent { } } - private final Action clearFilterAction = new AbstractAction(null, ResourceManager.getIcon("edit.clear")) { @Override @@ -386,19 +385,19 @@ class SubtitleDownloadComponent extends JComponent { } } - + @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } - + @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } - + private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { JList list = (JList) e.getSource(); @@ -431,7 +430,7 @@ class SubtitleDownloadComponent extends JComponent { } } - + private boolean isPending(Object[] selection) { for (Object value : selection) { SubtitlePackage subtitle = (SubtitlePackage) value; @@ -459,19 +458,19 @@ class SubtitleDownloadComponent extends JComponent { } } - + @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } - + @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } - + private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { JList list = (JList) e.getSource(); diff --git a/source/net/sourceforge/filebot/ui/subtitle/SubtitleViewer.java b/source/net/sourceforge/filebot/ui/subtitle/SubtitleViewer.java index 75368a57..2757a961 100644 --- a/source/net/sourceforge/filebot/ui/subtitle/SubtitleViewer.java +++ b/source/net/sourceforge/filebot/ui/subtitle/SubtitleViewer.java @@ -66,7 +66,7 @@ public class SubtitleViewer extends JFrame { private Color defaultFilterForeground = filterEditor.getForeground(); private Color disabledFilterForeground = Color.lightGray; - + public SubtitleViewer(String title) { super(title); @@ -102,7 +102,7 @@ public class SubtitleViewer extends JFrame { pack(); } - + private JTable createTable(TableModel model) { final JTable table = new JTable(model); table.setBackground(Color.white); @@ -141,7 +141,7 @@ public class SubtitleViewer extends JFrame { }); // focus around selected time stamp - installAction(table, KeyStroke.getKeyStroke("ENTER"), new AbstractAction("focus") { + installAction(table, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), new AbstractAction("focus") { @Override public void actionPerformed(ActionEvent e) { @@ -168,7 +168,7 @@ public class SubtitleViewer extends JFrame { return table; } - + private JTextField createFilterEditor() { final JTextField editor = new JTextField() { @@ -205,13 +205,13 @@ public class SubtitleViewer extends JFrame { return editor; } - + private RowFilter getTableFilter() { TableRowSorter sorter = (TableRowSorter) subtitleTable.getRowSorter(); return sorter.getRowFilter(); } - + private void setTableFilter(String filter) { // filter by words List filterList = new ArrayList(); @@ -230,22 +230,21 @@ public class SubtitleViewer extends JFrame { filterEditor.setForeground(filterList.isEmpty() ? disabledFilterForeground : defaultFilterForeground); } - + public void setData(List data) { model.setData(data); } - + public JLabel getTitleLabel() { return titleLabel; } - + public JLabel getInfoLabel() { return infoLabel; } - private final Action clearFilterAction = new AbstractAction(null, ResourceManager.getIcon("edit.clear")) { @Override @@ -254,17 +253,17 @@ public class SubtitleViewer extends JFrame { } }; - + private static class SubtitleFilter extends RowFilter { private final Pattern filter; - + public SubtitleFilter(String filter) { this.filter = compile(quote(filter), CASE_INSENSITIVE | UNICODE_CASE | CANON_EQ); } - + @Override public boolean include(Entry entry) { SubtitleTableModel model = (SubtitleTableModel) entry.getModel(); @@ -275,12 +274,12 @@ public class SubtitleViewer extends JFrame { } - + private static class SubtitleTableModel extends AbstractTableModel { private List data = emptyList(); - + public void setData(List data) { this.data = new ArrayList(data); @@ -288,12 +287,12 @@ public class SubtitleViewer extends JFrame { fireTableDataChanged(); } - + public SubtitleElement getRow(int row) { return data.get(row); } - + @Override public String getColumnName(int column) { switch (column) { @@ -310,19 +309,19 @@ public class SubtitleViewer extends JFrame { } } - + @Override public int getColumnCount() { return 4; } - + @Override public int getRowCount() { return data.size(); } - + @Override public Class getColumnClass(int column) { switch (column) { @@ -339,7 +338,7 @@ public class SubtitleViewer extends JFrame { } } - + @Override public Object getValueAt(int row, int column) { switch (column) { diff --git a/source/net/sourceforge/tuned/ui/TunedUtilities.java b/source/net/sourceforge/tuned/ui/TunedUtilities.java index 1117a454..8f292557 100644 --- a/source/net/sourceforge/tuned/ui/TunedUtilities.java +++ b/source/net/sourceforge/tuned/ui/TunedUtilities.java @@ -16,6 +16,7 @@ import java.awt.Window; import java.awt.dnd.DnDConstants; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.lang.reflect.InvocationTargetException; @@ -115,7 +116,7 @@ public final class TunedUtilities { component.getDocument().addUndoableEditListener(undoSupport); // install undo action - installAction(component, KeyStroke.getKeyStroke("control Z"), new AbstractAction("Undo") { + installAction(component, KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK), new AbstractAction("Undo") { @Override public void actionPerformed(ActionEvent e) { @@ -125,7 +126,7 @@ public final class TunedUtilities { }); // install redo action - installAction(component, KeyStroke.getKeyStroke("control Y"), new AbstractAction("Redo") { + installAction(component, KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK), new AbstractAction("Redo") { @Override public void actionPerformed(ActionEvent e) { @@ -255,8 +256,7 @@ public final class TunedUtilities { /** - * When trying to drag a row of a multi-select JTable, it will start selecting rows instead - * of initiating a drag. This TableUI will give the JTable proper dnd behaviour. + * When trying to drag a row of a multi-select JTable, it will start selecting rows instead of initiating a drag. This TableUI will give the JTable proper dnd behaviour. */ public static class DragDropRowTableUI extends BasicTableUI {