Use FMouseAdapter to make catalog and deck tables more responsive

This commit is contained in:
drdev
2013-11-04 03:17:28 +00:00
parent 9cf75ea844
commit 3e23eb517b
3 changed files with 30 additions and 26 deletions

View File

@@ -27,7 +27,6 @@ import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent; import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -64,6 +63,7 @@ import forge.gui.match.controllers.CDetail;
import forge.gui.match.controllers.CPicture; import forge.gui.match.controllers.CPicture;
import forge.gui.menus.IMenuProvider; import forge.gui.menus.IMenuProvider;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FMouseAdapter;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.itemmanager.ItemManager; import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerIO; import forge.gui.toolbox.itemmanager.SItemManagerIO;
@@ -359,28 +359,32 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
} }
}; };
catTable.addMouseListener(new MouseAdapter() { catTable.addMouseListener(new FMouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void onLeftDoubleClick(MouseEvent e) {
if (MouseEvent.BUTTON1 == e.getButton() && 2 == e.getClickCount()) { addSelectedCards(false, 1); } addSelectedCards(false, 1);
else if (MouseEvent.BUTTON3 == e.getButton()) { }
@Override
public void onRightClick(MouseEvent e) {
_ContextMenuBuilder cmb = new _ContextMenuBuilder(e, catTable, deckTable, onAdd); _ContextMenuBuilder cmb = new _ContextMenuBuilder(e, catTable, deckTable, onAdd);
childController.buildAddContextMenu(cmb); childController.buildAddContextMenu(cmb);
cmb.show(); cmb.show();
} }
}
}); });
deckTable.addMouseListener(new MouseAdapter() { deckTable.addMouseListener(new FMouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void onLeftDoubleClick(MouseEvent e) {
if (MouseEvent.BUTTON1 == e.getButton() && 2 == e.getClickCount()) { removeSelectedCards(false, 1); } removeSelectedCards(false, 1);
else if (MouseEvent.BUTTON3 == e.getButton()) { }
@Override
public void onRightClick(MouseEvent e) {
_ContextMenuBuilder cmb = new _ContextMenuBuilder(e, deckTable, catTable, onRemove); _ContextMenuBuilder cmb = new _ContextMenuBuilder(e, deckTable, catTable, onRemove);
childController.buildRemoveContextMenu(cmb); childController.buildRemoveContextMenu(cmb);
cmb.show(); cmb.show();
} }
}
}); });
final _FindAsYouType catFind = new _FindAsYouType(catView); final _FindAsYouType catFind = new _FindAsYouType(catView);

View File

@@ -16,21 +16,21 @@ public abstract class FMouseAdapter extends MouseAdapter {
public void onLeftMouseDown(MouseEvent e) {} public void onLeftMouseDown(MouseEvent e) {}
public void onLeftMouseUp(MouseEvent e) {} public void onLeftMouseUp(MouseEvent e) {}
public void onLeftClick(MouseEvent e) {} public void onLeftClick(MouseEvent e) {}
public void onLeftDblClick(MouseEvent e) {} public void onLeftDoubleClick(MouseEvent e) {}
public void onLeftMouseDragging(MouseEvent e) {} public void onLeftMouseDragging(MouseEvent e) {}
public void onLeftMouseDragDrop(MouseEvent e) {} public void onLeftMouseDragDrop(MouseEvent e) {}
public void onMiddleMouseDown(MouseEvent e) {} public void onMiddleMouseDown(MouseEvent e) {}
public void onMiddleMouseUp(MouseEvent e) {} public void onMiddleMouseUp(MouseEvent e) {}
public void onMiddleClick(MouseEvent e) {} public void onMiddleClick(MouseEvent e) {}
public void onMiddleDblClick(MouseEvent e) {} public void onMiddleDoubleClick(MouseEvent e) {}
public void onMiddleMouseDragging(MouseEvent e) {} public void onMiddleMouseDragging(MouseEvent e) {}
public void onMiddleMouseDragDrop(MouseEvent e) {} public void onMiddleMouseDragDrop(MouseEvent e) {}
public void onRightMouseDown(MouseEvent e) {} public void onRightMouseDown(MouseEvent e) {}
public void onRightMouseUp(MouseEvent e) {} public void onRightMouseUp(MouseEvent e) {}
public void onRightClick(MouseEvent e) {} public void onRightClick(MouseEvent e) {}
public void onRightDblClick(MouseEvent e) {} public void onRightDoubleClick(MouseEvent e) {}
public void onRightMouseDragging(MouseEvent e) {} public void onRightMouseDragging(MouseEvent e) {}
public void onRightMouseDragDrop(MouseEvent e) {} public void onRightMouseDragDrop(MouseEvent e) {}
@@ -90,17 +90,17 @@ public abstract class FMouseAdapter extends MouseAdapter {
if (firstClickLoc != null) { if (firstClickLoc != null) {
//if first mouse down resulted in click and second mouse down with same button in close proximity, //if first mouse down resulted in click and second mouse down with same button in close proximity,
//handle double click event (don't wait until second mouse up to improve responsiveness) //handle double click event (don't wait until second mouse up to improve responsiveness)
if (e.getClickCount() == 2 && e.getButton() == firstClickButton && if (e.getClickCount() % 2 == 0 && e.getButton() == firstClickButton &&
e.getLocationOnScreen().distance(firstClickLoc) <= 3) { e.getLocationOnScreen().distance(firstClickLoc) <= 3) {
switch (firstClickButton) { switch (firstClickButton) {
case 1: case 1:
onLeftDblClick(e); onLeftDoubleClick(e);
break; break;
case 2: case 2:
onMiddleDblClick(e); onMiddleDoubleClick(e);
break; break;
case 3: case 3:
onRightDblClick(e); onRightDoubleClick(e);
break; break;
} }
} }
@@ -172,7 +172,7 @@ public abstract class FMouseAdapter extends MouseAdapter {
//if mouse down on component and not cleared by drag or exit, handle click //if mouse down on component and not cleared by drag or exit, handle click
if (mouseDownLoc != null) { if (mouseDownLoc != null) {
//if first click, cache button and mouse down location for determination of double click later //if first click, cache button and mouse down location for determination of double click later
if (e.getClickCount() == 1) { if (e.getClickCount() % 2 == 1) {
firstClickButton = e.getButton(); firstClickButton = e.getButton();
firstClickLoc = mouseDownLoc; firstClickLoc = mouseDownLoc;
} }

View File

@@ -312,7 +312,7 @@ public class DeckLister extends JPanel implements ILocalRepaint {
} }
@Override @Override
public void onLeftDblClick(final MouseEvent e) { public void onLeftDoubleClick(final MouseEvent e) {
DeckLister.this.editDeck(RowPanel.this.deck); DeckLister.this.editDeck(RowPanel.this.deck);
} }
}); });