From 66b1a795c16586f84c1d1ebe31667a85dbd255f6 Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 22 Jan 2014 04:29:19 +0000 Subject: [PATCH] Make Quest Duels and Quest Challenges screens use FScrollPanel with arrow buttons Prevent focusing arrow buttons --- .../gui/home/quest/CSubmenuChallenges.java | 12 +++--- .../forge/gui/home/quest/CSubmenuDuels.java | 8 ++-- .../gui/home/quest/VSubmenuChallenges.java | 20 ++-------- .../forge/gui/home/quest/VSubmenuDuels.java | 19 ++-------- .../java/forge/gui/toolbox/FScrollPane.java | 1 + .../java/forge/gui/toolbox/FScrollPanel.java | 38 +++++++++++++++++++ 6 files changed, 57 insertions(+), 41 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java b/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java index b81a3ba1c26..68261e340b9 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java @@ -98,7 +98,7 @@ public enum CSubmenuChallenges implements ICDoc { quest.save(); } }); - + view.getCbCharm().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { @@ -124,7 +124,7 @@ public enum CSubmenuChallenges implements ICDoc { } } }; - + /* (non-Javadoc) * @see forge.control.home.IControlSubmenu#update() */ @@ -136,7 +136,7 @@ public enum CSubmenuChallenges implements ICDoc { final QuestController qCtrl = Singletons.getModel().getQuest(); if (qCtrl.getAchievements() == null) return; - + view.getLblTitle().setText("Challenges: " + qCtrl.getRank()); view.getPnlChallenges().removeAll(); @@ -161,9 +161,9 @@ public enum CSubmenuChallenges implements ICDoc { } rad.addKeyListener(_startOnEnter); rad.addMouseListener(_startOnDblClick); - grpPanel.add(temp, rad, "w 100%!, h 135px!, gap 2% 0 15px 15px"); + grpPanel.add(temp, rad, "w 100%!, h 135px!, gapy 15px"); } - view.getPnlChallenges().add(grpPanel, "w 96%!"); + view.getPnlChallenges().add(grpPanel, "w 100%!"); if (!haveAnyChallenges) { final FLabel lbl = new FLabel.Builder() @@ -180,7 +180,7 @@ public enum CSubmenuChallenges implements ICDoc { } Singletons.getView().getFrame().validate(); - + } /* (non-Javadoc) diff --git a/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuDuels.java b/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuDuels.java index acbe7053d2c..c4fd064160e 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuDuels.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/CSubmenuDuels.java @@ -67,7 +67,7 @@ public enum CSubmenuDuels implements ICDoc { quest.save(); } }); - + view.getCbCharm().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { @@ -105,7 +105,7 @@ public enum CSubmenuDuels implements ICDoc { } } }; - + /* (non-Javadoc) * @see forge.control.home.IControlSubmenu#update() */ @@ -134,9 +134,9 @@ public enum CSubmenuDuels implements ICDoc { } rad.addKeyListener(_startOnEnter); rad.addMouseListener(_startOnDblClick); - grpPanel.add(temp, rad, "w 100%!, h 135px!, gap 2% 0 15px 15px"); + grpPanel.add(temp, rad, "w 100%!, h 135px!, gapy 15px"); } - view.getPnlDuels().add(grpPanel, "w 96%!"); + view.getPnlDuels().add(grpPanel, "w 100%!"); } } diff --git a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuChallenges.java b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuChallenges.java index a0e01e7bf90..77cf3c8dd34 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuChallenges.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuChallenges.java @@ -7,8 +7,6 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; -import javax.swing.border.Border; - import net.miginfocom.swing.MigLayout; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; @@ -21,7 +19,7 @@ import forge.gui.home.VHomeUI; import forge.gui.toolbox.FCheckBox; import forge.gui.toolbox.FComboBoxWrapper; import forge.gui.toolbox.FLabel; -import forge.gui.toolbox.FScrollPane; +import forge.gui.toolbox.FScrollPanel; import forge.gui.toolbox.FSkin; /** @@ -38,11 +36,10 @@ public enum VSubmenuChallenges implements IVSubmenu, IVQuest private final DragTab tab = new DragTab("Quest Challenges"); //========== INSTANTIATION - private final JPanel pnlChallenges = new JPanel(); private final JPanel pnlStats = new JPanel(); private final JPanel pnlStart = new JPanel(); - private final FScrollPane scrChallenges = new FScrollPane(pnlChallenges, + private final FScrollPanel pnlChallenges = new FScrollPanel(new MigLayout("insets 0, gap 0, wrap"), true, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); private final StartButton btnStart = new StartButton(); @@ -93,10 +90,6 @@ public enum VSubmenuChallenges implements IVSubmenu, IVQuest * Constructor. */ private VSubmenuChallenges() { - scrChallenges.setBorder((Border)null); - pnlChallenges.setOpaque(false); - pnlChallenges.setLayout(new MigLayout("insets 0, gap 0, wrap")); - final String constraints = "h 30px!, gap 0 0 0 5px"; pnlStats.setLayout(new MigLayout("insets 0, gap 0, wrap, hidemode 3")); pnlStats.add(btnUnlock, "w 150px!, h 30px!, gap 0 0 0 10px"); @@ -151,7 +144,7 @@ public enum VSubmenuChallenges implements IVSubmenu, IVQuest VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblInfo, "h 30px!, span 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblCurrentDeck, "span 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblNextChallengeInWins, "span 2, gap 0 0 0 20px"); - VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrChallenges, "w 88% - 175px!, pushy, growy"); + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlChallenges, "w 88% - 175px!, pushy, growy"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlStats, "w 185px!, pushy, growy, gap 4% 4% 0 0, span 1 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(btnStart, "gap 0 0 30px 30px, ax center"); @@ -159,27 +152,22 @@ public enum VSubmenuChallenges implements IVSubmenu, IVQuest VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate(); } - /** @return {@link javax.swing.JPanel} */ - public JPanel getPnlChallenges() { + public FScrollPanel getPnlChallenges() { return pnlChallenges; } - /** @return {@link forge.gui.toolbox.FPanel} */ public JPanel getPnlStats() { return pnlStats; } - /** @return {@link forge.gui.toolbox.FPanel} */ public JPanel getPnlStart() { return pnlStart; } - /** @return {@link javax.swing.JLabel} */ public JLabel getLblTitle() { return lblTitle; } - /** @return {@link javax.swing.JLabel} */ @Override public FLabel getLblWorld() { return lblWorld; diff --git a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuDuels.java b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuDuels.java index 88a18c44367..0ce04118448 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuDuels.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/VSubmenuDuels.java @@ -7,8 +7,6 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; -import javax.swing.border.Border; - import net.miginfocom.swing.MigLayout; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; @@ -21,7 +19,7 @@ import forge.gui.home.VHomeUI; import forge.gui.toolbox.FCheckBox; import forge.gui.toolbox.FComboBoxWrapper; import forge.gui.toolbox.FLabel; -import forge.gui.toolbox.FScrollPane; +import forge.gui.toolbox.FScrollPanel; import forge.gui.toolbox.FSkin; /** @@ -38,10 +36,9 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats { private final DragTab tab = new DragTab("Quest Duels"); // Other fields - private final JPanel pnlDuels = new JPanel(); private final JPanel pnlStats = new JPanel(); - private final FScrollPane scrDuels = new FScrollPane(pnlDuels, + private final FScrollPanel pnlDuels = new FScrollPanel(new MigLayout("insets 0, gap 0, wrap, ax center"), true, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); private final StartButton btnStart = new StartButton(); @@ -91,10 +88,6 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats { * Constructor. */ private VSubmenuDuels() { - scrDuels.setBorder((Border)null); - pnlDuels.setOpaque(false); - pnlDuels.setLayout(new MigLayout("insets 0, gap 0, wrap, ax center")); - final String constraints = "h 30px!, gap 0 0 0 5px"; pnlStats.setLayout(new MigLayout("insets 0, gap 0, wrap, hidemode 0")); pnlStats.add(btnUnlock, "w 150px!, h 30px!, gap 0 0 0 10px"); @@ -148,7 +141,7 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats { VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblInfo, "h 30px!, span 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblCurrentDeck, "span 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblNextChallengeInWins, "span 2, gap 0 0 0 20px"); - VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrDuels, "w 88% - 175px!, pushy, growy"); + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlDuels, "w 88% - 175px!, pushy, growy"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlStats, "w 185px!, pushy, growy, gap 4% 4% 0 0, span 1 2"); VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(btnStart, "gap 0 0 30px 30px, ax center"); @@ -156,22 +149,18 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats { VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate(); } - /** @return {@link javax.swing.JPanel} */ - public JPanel getPnlDuels() { + public FScrollPanel getPnlDuels() { return pnlDuels; } - /** @return {@link forge.gui.toolbox.FPanel} */ public JPanel getPnlStats() { return pnlStats; } - /** @return {@link javax.swing.JLabel} */ public JLabel getLblTitle() { return lblTitle; } - /** @return {@link javax.swing.JLabel} */ @Override public FLabel getLblWorld() { return lblWorld; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/FScrollPane.java b/forge-gui/src/main/java/forge/gui/toolbox/FScrollPane.java index fa5dff697f5..a6f17a92a0b 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/FScrollPane.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/FScrollPane.java @@ -153,6 +153,7 @@ public class FScrollPane extends SkinnedScrollPane { scrollBar = scrollBar0; incrementDirection = incrementDirection0; timer.setInitialDelay(500); //wait half a second after mouse down before starting timer + this.setFocusable(false); } @Override diff --git a/forge-gui/src/main/java/forge/gui/toolbox/FScrollPanel.java b/forge-gui/src/main/java/forge/gui/toolbox/FScrollPanel.java index 8f05cd16731..132032ed9b1 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/FScrollPanel.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/FScrollPanel.java @@ -19,7 +19,9 @@ package forge.gui.toolbox; import java.awt.Component; import java.awt.LayoutManager; +import java.awt.MenuComponent; import java.awt.PopupMenu; + import javax.swing.JPanel; import javax.swing.ScrollPaneConstants; @@ -97,4 +99,40 @@ public class FScrollPanel extends FScrollPane { } return super.add(name, comp); } + + @Override + public void remove(Component comp) { + if (innerPanel != null) { + innerPanel.remove(comp); + return; + } + super.remove(comp); + } + + @Override + public void remove(int index) { + if (innerPanel != null) { + innerPanel.remove(index); + return; + } + super.remove(index); + } + + @Override + public void remove(MenuComponent popup) { + if (innerPanel != null) { + innerPanel.remove(popup); + return; + } + super.remove(popup); + } + + @Override + public void removeAll() { + if (innerPanel != null) { + innerPanel.removeAll(); + return; + } + super.removeAll(); + } }