mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Permanent scrolling fix on ViewSettings, plus a little PMD.
This commit is contained in:
@@ -1,14 +1,10 @@
|
|||||||
package forge.view.home;
|
package forge.view.home;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Container;
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.FlowLayout;
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.awt.Insets;
|
|
||||||
import java.awt.event.FocusAdapter;
|
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;
|
||||||
@@ -63,24 +59,23 @@ public class ViewSettings extends JPanel {
|
|||||||
private final JCheckBox cbAnte, cbScaleLarger, cbDevMode, cbRemoveSmall, cbRemoveArtifacts,
|
private final JCheckBox cbAnte, cbScaleLarger, cbDevMode, cbRemoveSmall, cbRemoveArtifacts,
|
||||||
cbUploadDraft, cbStackLand, cbRandomFoil, cbTextMana, cbSingletons;
|
cbUploadDraft, cbStackLand, cbRandomFoil, cbTextMana, cbSingletons;
|
||||||
|
|
||||||
//private final JRadioButton radCardTiny, radCardSmaller, radCardSmall,
|
|
||||||
// radCardMedium, radCardLarge, radCardHuge;
|
|
||||||
|
|
||||||
private final JPanel pnlTabber, pnlPrefs, pnlAvatars, tabPrefs, tabAvatars;
|
private final JPanel pnlTabber, pnlPrefs, pnlAvatars, tabPrefs, tabAvatars;
|
||||||
private final JScrollPane scrContent;
|
private final JScrollPane scrContent;
|
||||||
|
|
||||||
|
private String sectionConstraints, regularConstraints, tabberConstraints;
|
||||||
|
|
||||||
private AvatarLabel avatarHuman, avatarAI;
|
private AvatarLabel avatarHuman, avatarAI;
|
||||||
private List<AvatarLabel> lstAvatars;
|
private List<AvatarLabel> lstAvatars;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Assembles swing components for "Settings" mode menu.
|
* Assembles swing components for "Settings" mode menu.
|
||||||
* @param v0   HomeTopLevel
|
* @param view0   HomeTopLevel
|
||||||
*/
|
*/
|
||||||
public ViewSettings(final HomeTopLevel v0) {
|
public ViewSettings(final HomeTopLevel view0) {
|
||||||
// Display
|
// Display
|
||||||
super();
|
super();
|
||||||
this.setOpaque(false);
|
this.setOpaque(false);
|
||||||
this.parentView = v0;
|
this.parentView = view0;
|
||||||
|
|
||||||
// Final component inits: JPanels
|
// Final component inits: JPanels
|
||||||
pnlTabber = new JPanel();
|
pnlTabber = new JPanel();
|
||||||
@@ -95,14 +90,6 @@ public class ViewSettings extends JPanel {
|
|||||||
tabPrefs = new SubTab("Preferences");
|
tabPrefs = new SubTab("Preferences");
|
||||||
tabAvatars = new SubTab("Avatars");
|
tabAvatars = new SubTab("Avatars");
|
||||||
|
|
||||||
// Final component inits: Radio buttons and check boxes
|
|
||||||
/*radCardTiny = new CardSizeRadio("Tiny");
|
|
||||||
radCardSmaller = new CardSizeRadio("Smaller");
|
|
||||||
radCardSmall = new CardSizeRadio("Small");
|
|
||||||
radCardMedium = new CardSizeRadio("Medium");
|
|
||||||
radCardLarge = new CardSizeRadio("Large");
|
|
||||||
radCardHuge = new CardSizeRadio("Huge");*/
|
|
||||||
|
|
||||||
cbRemoveSmall = new OptionsCheckBox("Remove Small Creatures");
|
cbRemoveSmall = new OptionsCheckBox("Remove Small Creatures");
|
||||||
cbSingletons = new OptionsCheckBox("Singleton Mode");
|
cbSingletons = new OptionsCheckBox("Singleton Mode");
|
||||||
cbRemoveArtifacts = new OptionsCheckBox("Remove Artifacts");
|
cbRemoveArtifacts = new OptionsCheckBox("Remove Artifacts");
|
||||||
@@ -117,7 +104,7 @@ public class ViewSettings extends JPanel {
|
|||||||
// Final component inits: Various
|
// Final component inits: Various
|
||||||
scrContent = new JScrollPane(
|
scrContent = new JScrollPane(
|
||||||
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
|
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
|
||||||
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
scrContent.getViewport().setOpaque(false);
|
scrContent.getViewport().setOpaque(false);
|
||||||
scrContent.setBorder(null);
|
scrContent.setBorder(null);
|
||||||
scrContent.setOpaque(false);
|
scrContent.setOpaque(false);
|
||||||
@@ -149,20 +136,20 @@ public class ViewSettings extends JPanel {
|
|||||||
tabPrefs.setToolTipText("Global preference options");
|
tabPrefs.setToolTipText("Global preference options");
|
||||||
tabAvatars.setToolTipText("Human and AI avatar select");
|
tabAvatars.setToolTipText("Human and AI avatar select");
|
||||||
|
|
||||||
final String constraints = "w 50%!, h 20px!";
|
tabberConstraints = "w 50%!, h 20px!";
|
||||||
pnlTabber.setOpaque(false);
|
pnlTabber.setOpaque(false);
|
||||||
pnlTabber.setLayout(new MigLayout("insets 0, gap 0, align center"));
|
pnlTabber.setLayout(new MigLayout("insets 0, gap 0, align center"));
|
||||||
|
|
||||||
pnlTabber.add(tabPrefs, constraints);
|
pnlTabber.add(tabPrefs, tabberConstraints);
|
||||||
pnlTabber.add(tabAvatars, constraints);
|
pnlTabber.add(tabAvatars, tabberConstraints);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populatePrefs() {
|
private void populatePrefs() {
|
||||||
pnlPrefs.setLayout(new MigLayout("insets 0, gap 0, wrap 2"));
|
pnlPrefs.setLayout(new MigLayout("insets 0, gap 0, wrap 2"));
|
||||||
|
|
||||||
// Spacing between components is defined here.
|
// Spacing between components is defined here.
|
||||||
final String sectionConstraints = "w 80%!, h 42px!, gap 10% 0 10px 10px, span 2 1";
|
sectionConstraints = "w 80%!, h 42px!, gap 10% 0 10px 10px, span 2 1";
|
||||||
final String regularConstraints = "w 80%!, h 22px!, gap 10% 0 0 10px, span 2 1";
|
regularConstraints = "w 80%!, h 22px!, gap 10% 0 0 10px, span 2 1";
|
||||||
|
|
||||||
// Deck building options
|
// Deck building options
|
||||||
pnlPrefs.add(new SectionLabel("Deck Building Options"), sectionConstraints + ", gaptop 2%");
|
pnlPrefs.add(new SectionLabel("Deck Building Options"), sectionConstraints + ", gaptop 2%");
|
||||||
@@ -213,33 +200,17 @@ public class ViewSettings extends JPanel {
|
|||||||
pnlPrefs.add(cbTextMana, regularConstraints);
|
pnlPrefs.add(cbTextMana, regularConstraints);
|
||||||
pnlPrefs.add(new NoteLabel("Overlays each card with basic card-specific information."), regularConstraints);
|
pnlPrefs.add(new NoteLabel("Overlays each card with basic card-specific information."), regularConstraints);
|
||||||
|
|
||||||
// Card size radio buttons
|
|
||||||
/*ButtonGroup group = new ButtonGroup();
|
|
||||||
group.add(radCardTiny);
|
|
||||||
group.add(radCardSmaller);
|
|
||||||
group.add(radCardSmall);
|
|
||||||
group.add(radCardMedium);
|
|
||||||
group.add(radCardLarge);
|
|
||||||
group.add(radCardHuge);
|
|
||||||
|
|
||||||
String constraints = "gapleft 10%, wrap";
|
|
||||||
pnlPrefs.add(radCardTiny, constraints);
|
|
||||||
pnlPrefs.add(radCardSmaller, constraints);
|
|
||||||
pnlPrefs.add(radCardSmall, constraints);
|
|
||||||
pnlPrefs.add(radCardMedium, constraints);
|
|
||||||
pnlPrefs.add(radCardLarge, constraints);
|
|
||||||
pnlPrefs.add(radCardHuge, constraints + ", gapbottom 2%");*/
|
|
||||||
|
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
final JLabel lblShortcuts = new SectionLabel("Keyboard Shortcuts");
|
final JLabel lblShortcuts = new SectionLabel("Keyboard Shortcuts");
|
||||||
pnlPrefs.add(lblShortcuts, sectionConstraints);
|
pnlPrefs.add(lblShortcuts, sectionConstraints);
|
||||||
|
|
||||||
List<Shortcut> shortcuts = ((GuiTopLevel) AllZone.getDisplay()).getController().getShortcuts();
|
final List<Shortcut> shortcuts = ((GuiTopLevel) AllZone.getDisplay()).getController().getShortcuts();
|
||||||
|
|
||||||
FLabel lblTemp;
|
FLabel lblTemp;
|
||||||
for (Shortcut s : shortcuts) {
|
KeyboardShortcutField ksf;
|
||||||
|
for (final Shortcut s : shortcuts) {
|
||||||
lblTemp = new FLabel.Builder().text(s.getDescription()).build();
|
lblTemp = new FLabel.Builder().text(s.getDescription()).build();
|
||||||
KeyboardShortcutField ksf = new KeyboardShortcutField(s);
|
ksf = new KeyboardShortcutField(s);
|
||||||
pnlPrefs.add(lblTemp, "w 40%!, h 22px!, gap 10%! 0 0 1%");
|
pnlPrefs.add(lblTemp, "w 40%!, h 22px!, gap 10%! 0 0 1%");
|
||||||
pnlPrefs.add(ksf, "w 25%!");
|
pnlPrefs.add(ksf, "w 25%!");
|
||||||
}
|
}
|
||||||
@@ -250,34 +221,26 @@ public class ViewSettings extends JPanel {
|
|||||||
} // End populatePrefs()
|
} // End populatePrefs()
|
||||||
|
|
||||||
private void populateAvatars() {
|
private void populateAvatars() {
|
||||||
final JPanel pnlTitle = new JPanel(new MigLayout("insets 0, gap 0 0 20px 20px, wrap, alignx center"));
|
|
||||||
final JLabel lblTitle = new SectionLabel("Avatar Selection");
|
final JLabel lblTitle = new SectionLabel("Avatar Selection");
|
||||||
final JLabel lblNote1 = new NoteLabel("Click on an image to set that avatar for a player or AI.");
|
final JLabel lblNote1 = new NoteLabel("Click on an image to set that avatar for a player or AI.");
|
||||||
final JLabel lblNote2 = new NoteLabel("Click multiple times to cycle through available players or AI.");
|
final JLabel lblNote2 = new NoteLabel("Click multiple times to cycle.");
|
||||||
|
|
||||||
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
|
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
lblNote1.setHorizontalAlignment(SwingConstants.CENTER);
|
lblNote1.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
lblNote2.setHorizontalAlignment(SwingConstants.CENTER);
|
lblNote2.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
|
|
||||||
pnlTitle.setOpaque(false);
|
pnlAvatars.setLayout(new MigLayout("insets 0, gap 0, align center, wrap 3"));
|
||||||
pnlTitle.add(lblTitle, "w 50%!");
|
pnlAvatars.add(lblTitle, "w 330px!, span 3 1");
|
||||||
pnlTitle.add(lblNote1, "w 50%!");
|
pnlAvatars.add(lblNote1, "w 330px!, span 3 1");
|
||||||
pnlTitle.add(lblNote2, "w 50%!");
|
pnlAvatars.add(lblNote2, "w 330px!, span 3 1");
|
||||||
|
|
||||||
final JPanel pnlPics = new JPanel(new ModifiedFlowLayout(1, 30, 30));
|
|
||||||
pnlPics.setOpaque(false);
|
|
||||||
|
|
||||||
pnlAvatars.setLayout(new ModifiedFlowLayout(1, 30, 30));
|
|
||||||
|
|
||||||
lstAvatars = new ArrayList<AvatarLabel>();
|
lstAvatars = new ArrayList<AvatarLabel>();
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
for (Image i : FSkin.getAvatars().values()) {
|
for (final Image i : FSkin.getAvatars().values()) {
|
||||||
lstAvatars.add(new AvatarLabel(i, counter++));
|
lstAvatars.add(new AvatarLabel(i, counter++));
|
||||||
pnlAvatars.add(lstAvatars.get(lstAvatars.size() - 1));
|
pnlAvatars.add(lstAvatars.get(lstAvatars.size() - 1), "gap 5px 5px 5px 5px");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
final String[] indexes = Singletons.getModel().getPreferences().getPref(FPref.UI_AVATARS).split(",");
|
final String[] indexes = Singletons.getModel().getPreferences().getPref(FPref.UI_AVATARS).split(",");
|
||||||
int humanIndex = Integer.parseInt(indexes[0]);
|
int humanIndex = Integer.parseInt(indexes[0]);
|
||||||
int aiIndex = Integer.parseInt(indexes[1]);
|
int aiIndex = Integer.parseInt(indexes[1]);
|
||||||
@@ -304,25 +267,25 @@ public class ViewSettings extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Surprisingly complicated - be careful when modifying! */
|
/** Surprisingly complicated - be careful when modifying! */
|
||||||
private void cycleOwner(final AvatarLabel a0) {
|
private void cycleOwner(final AvatarLabel lbl0) {
|
||||||
if (a0.getOwner() == null) {
|
if (lbl0.getOwner() == null) {
|
||||||
a0.setOwner(PlayerType.HUMAN);
|
lbl0.setOwner(PlayerType.HUMAN);
|
||||||
a0.repaint();
|
lbl0.repaint();
|
||||||
|
|
||||||
if (avatarHuman != null) {
|
if (avatarHuman != null) {
|
||||||
avatarHuman.setOwner(null);
|
avatarHuman.setOwner(null);
|
||||||
avatarHuman.repaint();
|
avatarHuman.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
avatarHuman = a0;
|
avatarHuman = lbl0;
|
||||||
}
|
}
|
||||||
else if (a0.getOwner() == PlayerType.HUMAN) {
|
else if (lbl0.getOwner() == PlayerType.HUMAN) {
|
||||||
// Re-assign avatar to human
|
// Re-assign avatar to human
|
||||||
avatarHuman.setOwner(null);
|
avatarHuman.setOwner(null);
|
||||||
avatarHuman.repaint();
|
avatarHuman.repaint();
|
||||||
|
|
||||||
for (int i = 0; i < lstAvatars.size(); i++) {
|
for (int i = 0; i < lstAvatars.size(); i++) {
|
||||||
if (lstAvatars.get(i) != a0) {
|
if (lstAvatars.get(i) != lbl0) {
|
||||||
avatarHuman = lstAvatars.get(i);
|
avatarHuman = lstAvatars.get(i);
|
||||||
avatarHuman.setOwner(PlayerType.HUMAN);
|
avatarHuman.setOwner(PlayerType.HUMAN);
|
||||||
avatarHuman.repaint();
|
avatarHuman.repaint();
|
||||||
@@ -331,19 +294,19 @@ public class ViewSettings extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Assign computer
|
// Assign computer
|
||||||
a0.setOwner(PlayerType.COMPUTER);
|
lbl0.setOwner(PlayerType.COMPUTER);
|
||||||
a0.repaint();
|
lbl0.repaint();
|
||||||
|
|
||||||
if (avatarAI != null) {
|
if (avatarAI != null) {
|
||||||
avatarAI.setOwner(null);
|
avatarAI.setOwner(null);
|
||||||
avatarAI.repaint();
|
avatarAI.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
avatarAI = a0;
|
avatarAI = lbl0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
a0.setOwner(null);
|
lbl0.setOwner(null);
|
||||||
a0.repaint();
|
lbl0.repaint();
|
||||||
|
|
||||||
// Re-assign avatar to computer
|
// Re-assign avatar to computer
|
||||||
avatarAI.setOwner(null);
|
avatarAI.setOwner(null);
|
||||||
@@ -376,63 +339,21 @@ public class ViewSettings extends JPanel {
|
|||||||
|
|
||||||
this.addMouseListener(new MouseAdapter() {
|
this.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(MouseEvent e) {
|
public void mouseEntered(final MouseEvent evt) {
|
||||||
setOpaque(true);
|
setOpaque(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e) {
|
public void mouseExited(final MouseEvent evt) {
|
||||||
setOpaque(false);
|
setOpaque(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Consolidates checkbox styling in one place. */
|
|
||||||
/* private class OptionsRadio extends JRadioButton {
|
|
||||||
public OptionsRadio(final String txt0) {
|
|
||||||
super();
|
|
||||||
setText(txt0);
|
|
||||||
setFont(FSkin.getBoldFont(12));
|
|
||||||
setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
|
||||||
setBackground(FSkin.getColor(FSkin.Colors.CLR_HOVER));
|
|
||||||
setOpaque(false);
|
|
||||||
|
|
||||||
this.addMouseListener(new MouseAdapter() {
|
|
||||||
@Override
|
|
||||||
public void mouseEntered(MouseEvent e) {
|
|
||||||
setOpaque(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void mouseExited(MouseEvent e) {
|
|
||||||
setOpaque(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*private class CardSizeRadio extends OptionsRadio {
|
|
||||||
public CardSizeRadio(String txt0) {
|
|
||||||
super(txt0);
|
|
||||||
if (Singletons.getModel().getPreferences().getPref(FPref.UI_CARD_SIZE)
|
|
||||||
.equalsIgnoreCase(txt0)) {
|
|
||||||
setSelected(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.addActionListener(new AbstractAction() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent arg0) {
|
|
||||||
try { control.updateCardSize(CardSizeRadio.this); }
|
|
||||||
catch (Exception e) { e.printStackTrace(); }
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/** Consolidates section title label styling in one place. */
|
/** Consolidates section title label styling in one place. */
|
||||||
private class SectionLabel extends JLabel {
|
private class SectionLabel extends JLabel {
|
||||||
public SectionLabel(String txt0) {
|
public SectionLabel(final String txt0) {
|
||||||
super(txt0);
|
super(txt0);
|
||||||
setBorder(new MatteBorder(0, 0, 1, 0, FSkin.getColor(FSkin.Colors.CLR_BORDERS)));
|
setBorder(new MatteBorder(0, 0, 1, 0, FSkin.getColor(FSkin.Colors.CLR_BORDERS)));
|
||||||
setHorizontalAlignment(SwingConstants.CENTER);
|
setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
@@ -443,7 +364,7 @@ public class ViewSettings extends JPanel {
|
|||||||
|
|
||||||
/** Consolidates notation label styling in one place. */
|
/** Consolidates notation label styling in one place. */
|
||||||
private class NoteLabel extends JLabel {
|
private class NoteLabel extends JLabel {
|
||||||
public NoteLabel(String txt0) {
|
public NoteLabel(final String txt0) {
|
||||||
super(txt0);
|
super(txt0);
|
||||||
setFont(FSkin.getItalicFont(12));
|
setFont(FSkin.getItalicFont(12));
|
||||||
setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
||||||
@@ -456,8 +377,9 @@ public class ViewSettings extends JPanel {
|
|||||||
private PlayerType owner;
|
private PlayerType owner;
|
||||||
private boolean hovered = false;
|
private boolean hovered = false;
|
||||||
|
|
||||||
public AvatarLabel(Image i0, int index0) {
|
public AvatarLabel(final Image img0, final int index0) {
|
||||||
img = i0;
|
super();
|
||||||
|
img = img0;
|
||||||
index = index0;
|
index = index0;
|
||||||
setMaximumSize(new Dimension(100, 120));
|
setMaximumSize(new Dimension(100, 120));
|
||||||
setMinimumSize(new Dimension(100, 120));
|
setMinimumSize(new Dimension(100, 120));
|
||||||
@@ -465,18 +387,18 @@ public class ViewSettings extends JPanel {
|
|||||||
|
|
||||||
this.addMouseListener(new MouseAdapter() {
|
this.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(MouseEvent e) { hovered = true; repaint(); }
|
public void mouseEntered(final MouseEvent evt) { hovered = true; repaint(); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e) { hovered = false; repaint(); }
|
public void mouseExited(final MouseEvent evt) { hovered = false; repaint(); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) { cycleOwner(AvatarLabel.this); repaint(); }
|
public void mouseClicked(final MouseEvent evt) { cycleOwner(AvatarLabel.this); repaint(); }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOwner(PlayerType p0) {
|
public void setOwner(final PlayerType player0) {
|
||||||
this.owner = p0;
|
this.owner = player0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerType getOwner() {
|
public PlayerType getOwner() {
|
||||||
@@ -487,19 +409,19 @@ public class ViewSettings extends JPanel {
|
|||||||
return this.index;
|
return this.index;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void paintComponent(Graphics g) {
|
protected void paintComponent(final Graphics graphics0) {
|
||||||
if (hovered) {
|
if (hovered) {
|
||||||
g.setColor(FSkin.getColor(FSkin.Colors.CLR_HOVER));
|
graphics0.setColor(FSkin.getColor(FSkin.Colors.CLR_HOVER));
|
||||||
g.fillRect(0, 0, 100, 120);
|
graphics0.fillRect(0, 0, 100, 120);
|
||||||
}
|
}
|
||||||
|
|
||||||
g.drawImage(img, 0, 20, null);
|
graphics0.drawImage(img, 0, 20, null);
|
||||||
if (owner == null) { return; }
|
if (owner == null) { return; }
|
||||||
|
|
||||||
g.setColor(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
graphics0.setColor(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
||||||
g.drawRect(0, 0, 99, 119);
|
graphics0.drawRect(0, 0, 99, 119);
|
||||||
g.setFont(FSkin.getBoldFont(14));
|
graphics0.setFont(FSkin.getBoldFont(14));
|
||||||
g.drawString(owner.toString(), 5, 15);
|
graphics0.drawString(owner.toString(), 5, 15);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,33 +438,33 @@ public class ViewSettings extends JPanel {
|
|||||||
* the shortcut. Also, an action listener that handles translation of
|
* the shortcut. Also, an action listener that handles translation of
|
||||||
* keycodes into characters and (dis)assembly of keycode stack.
|
* keycodes into characters and (dis)assembly of keycode stack.
|
||||||
*
|
*
|
||||||
* @param s0   Shortcut object
|
* @param shortcut0   Shortcut object
|
||||||
*/
|
*/
|
||||||
public KeyboardShortcutField(final Shortcut s0) {
|
public KeyboardShortcutField(final Shortcut shortcut0) {
|
||||||
super();
|
super();
|
||||||
this.setEditable(false);
|
this.setEditable(false);
|
||||||
this.setFont(FSkin.getFont(14));
|
this.setFont(FSkin.getFont(14));
|
||||||
this.setCodeString(Singletons.getModel().getPreferences().getPref(s0.getPrefKey()));
|
this.setCodeString(Singletons.getModel().getPreferences().getPref(shortcut0.getPrefKey()));
|
||||||
|
|
||||||
this.addKeyListener(new KeyAdapter() {
|
this.addKeyListener(new KeyAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void keyPressed(final KeyEvent e) {
|
public void keyPressed(final KeyEvent evt) {
|
||||||
KeyboardShortcuts.addKeyCode(e);
|
KeyboardShortcuts.addKeyCode(evt);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.addFocusListener(new FocusAdapter() {
|
this.addFocusListener(new FocusAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void focusGained(final FocusEvent e) {
|
public void focusGained(final FocusEvent evt) {
|
||||||
KeyboardShortcutField.this.setBackground(FSkin.getColor(FSkin.Colors.CLR_ACTIVE));
|
KeyboardShortcutField.this.setBackground(FSkin.getColor(FSkin.Colors.CLR_ACTIVE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void focusLost(final FocusEvent e) {
|
public void focusLost(final FocusEvent evt) {
|
||||||
Singletons.getModel().getPreferences().setPref(
|
Singletons.getModel().getPreferences().setPref(
|
||||||
s0.getPrefKey(), getCodeString());
|
shortcut0.getPrefKey(), getCodeString());
|
||||||
Singletons.getModel().getPreferences().save();
|
Singletons.getModel().getPreferences().save();
|
||||||
s0.attach();
|
shortcut0.attach();
|
||||||
KeyboardShortcutField.this.setBackground(Color.white);
|
KeyboardShortcutField.this.setBackground(Color.white);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -553,22 +475,22 @@ public class ViewSettings extends JPanel {
|
|||||||
*
|
*
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getCodeString() {
|
public final String getCodeString() {
|
||||||
return this.codeString;
|
return this.codeString;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the code string.
|
* Sets the code string.
|
||||||
*
|
*
|
||||||
* @param s0
|
* @param str0
|
||||||
*   The new code string (space delimited)
|
*   The new code string (space delimited)
|
||||||
*/
|
*/
|
||||||
public void setCodeString(final String s0) {
|
public final void setCodeString(final String str0) {
|
||||||
if (s0.equals("null")) {
|
if ("null".equals(str0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.codeString = s0.trim();
|
this.codeString = str0.trim();
|
||||||
|
|
||||||
final List<String> codes = new ArrayList<String>(Arrays.asList(this.codeString.split(" ")));
|
final List<String> codes = new ArrayList<String>(Arrays.asList(this.codeString.split(" ")));
|
||||||
final List<String> displayText = new ArrayList<String>();
|
final List<String> displayText = new ArrayList<String>();
|
||||||
@@ -584,27 +506,27 @@ public class ViewSettings extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link javax.swing.JPanel} */
|
/** @return {@link javax.swing.JPanel} */
|
||||||
public JPanel getPnlPrefs() {
|
public final JPanel getPnlPrefs() {
|
||||||
return this.pnlPrefs;
|
return this.pnlPrefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link javax.swing.JPanel} */
|
/** @return {@link javax.swing.JPanel} */
|
||||||
public JPanel getPnlAvatars() {
|
public final JPanel getPnlAvatars() {
|
||||||
return this.pnlAvatars;
|
return this.pnlAvatars;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link javax.swing.JList} */
|
/** @return {@link javax.swing.JList} */
|
||||||
public JList getLstChooseSkin() {
|
public final JList getLstChooseSkin() {
|
||||||
return lstChooseSkin;
|
return lstChooseSkin;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link javax.swing.JCheckBox} */
|
/** @return {@link javax.swing.JCheckBox} */
|
||||||
public JCheckBox getCbRemoveSmall() {
|
public final JCheckBox getCbRemoveSmall() {
|
||||||
return cbRemoveSmall;
|
return cbRemoveSmall;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@link javax.swing.JCheckBox} */
|
/** @return {@link javax.swing.JCheckBox} */
|
||||||
public JCheckBox getCbSingletons() {
|
public final JCheckBox getCbSingletons() {
|
||||||
return cbSingletons;
|
return cbSingletons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -679,121 +601,14 @@ public class ViewSettings extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public void showPrefsTab() {
|
public final void showPrefsTab() {
|
||||||
this.scrContent.getViewport().setView(pnlPrefs);
|
this.scrContent.getViewport().setView(pnlPrefs);
|
||||||
control.updateTabber(tabPrefs);
|
control.updateTabber(tabPrefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public void showAvatarsTab() {
|
public final void showAvatarsTab() {
|
||||||
this.scrContent.getViewport().setView(pnlAvatars);
|
this.scrContent.getViewport().setView(pnlAvatars);
|
||||||
control.updateTabber(tabAvatars);
|
control.updateTabber(tabAvatars);
|
||||||
}
|
}
|
||||||
|
|
||||||
//============= HIGHLY EXPERIMENTAL Doublestrike 13-02-12
|
|
||||||
/**
|
|
||||||
* A modified version of FlowLayout that allows containers using this
|
|
||||||
* Layout to behave in a reasonable manner when placed inside a
|
|
||||||
* JScrollPane
|
|
||||||
* @author Babu Kalakrishnan
|
|
||||||
* Modifications by greearb and jzd
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class ModifiedFlowLayout extends FlowLayout {
|
|
||||||
public ModifiedFlowLayout() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ModifiedFlowLayout(int align) {
|
|
||||||
super(align);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ModifiedFlowLayout(int align, int hgap, int vgap) {
|
|
||||||
super(align, hgap, vgap);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Dimension minimumLayoutSize(Container target) {
|
|
||||||
// Size of largest component, so we can resize it in
|
|
||||||
// either direction with something like a split-pane.
|
|
||||||
return computeMinSize(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Dimension preferredLayoutSize(Container target) {
|
|
||||||
return computeSize(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dimension computeSize(Container target) {
|
|
||||||
synchronized (target.getTreeLock()) {
|
|
||||||
int hgap = getHgap();
|
|
||||||
int vgap = getVgap();
|
|
||||||
int w = target.getWidth();
|
|
||||||
|
|
||||||
// Let this behave like a regular FlowLayout (single row)
|
|
||||||
// if the container hasn't been assigned any size yet
|
|
||||||
if (w == 0) {
|
|
||||||
w = Integer.MAX_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Insets insets = target.getInsets();
|
|
||||||
if (insets == null){
|
|
||||||
insets = new Insets(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
int reqdWidth = 0;
|
|
||||||
|
|
||||||
int maxwidth = w - (insets.left + insets.right + hgap * 2);
|
|
||||||
int n = target.getComponentCount();
|
|
||||||
int x = 0;
|
|
||||||
int y = insets.top + vgap; // FlowLayout starts by adding vgap, so do that here too.
|
|
||||||
int rowHeight = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
Component c = target.getComponent(i);
|
|
||||||
if (c.isVisible()) {
|
|
||||||
Dimension d = c.getPreferredSize();
|
|
||||||
if ((x == 0) || ((x + d.width) <= maxwidth)) {
|
|
||||||
// fits in current row.
|
|
||||||
if (x > 0) {
|
|
||||||
x += hgap;
|
|
||||||
}
|
|
||||||
x += d.width;
|
|
||||||
rowHeight = Math.max(rowHeight, d.height);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Start of new row
|
|
||||||
x = d.width;
|
|
||||||
y += vgap + rowHeight;
|
|
||||||
rowHeight = d.height;
|
|
||||||
}
|
|
||||||
reqdWidth = Math.max(reqdWidth, x);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
y += rowHeight;
|
|
||||||
y += insets.bottom;
|
|
||||||
return new Dimension(reqdWidth+insets.left+insets.right, y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dimension computeMinSize(Container target) {
|
|
||||||
synchronized (target.getTreeLock()) {
|
|
||||||
int minx = Integer.MAX_VALUE;
|
|
||||||
int miny = Integer.MIN_VALUE;
|
|
||||||
boolean found_one = false;
|
|
||||||
int n = target.getComponentCount();
|
|
||||||
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
Component c = target.getComponent(i);
|
|
||||||
if (c.isVisible()) {
|
|
||||||
found_one = true;
|
|
||||||
Dimension d = c.getPreferredSize();
|
|
||||||
minx = Math.min(minx, d.width);
|
|
||||||
miny = Math.min(miny, d.height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (found_one) {
|
|
||||||
return new Dimension(minx, miny);
|
|
||||||
}
|
|
||||||
return new Dimension(0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user