KeplerBR

FreeCol - Search Options in "Find Settlement"

Oct 13th, 2013
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 6.05 KB | None | 0 0
  1. diff --git "a/C:\\Users\\WINDOWS\\AppData\\Local\\Temp\\TortoiseGit\\FinA141.tmp\\FindSettlementDialog-18c3359-left.java" "b/C:\\Apenas Meu\\FreeCol Git\\src\\net\\sf\\freecol\\client\\gui\\panel\\FindSettlementDialog.java"
  2. index 38860bb..528954a 100644
  3. --- "a/C:\\Users\\WINDOWS\\AppData\\Local\\Temp\\TortoiseGit\\FinA141.tmp\\FindSettlementDialog-18c3359-left.java"
  4. +++ "b/C:\\Apenas Meu\\FreeCol Git\\src\\net\\sf\\freecol\\client\\gui\\panel\\FindSettlementDialog.java"  
  5. @@ -22,24 +22,24 @@ package net.sf.freecol.client.gui.panel;
  6.  import java.awt.Dimension;
  7.  import java.awt.Image;
  8.  import java.awt.event.ActionEvent;
  9. +import java.awt.event.ItemEvent;
  10.  import java.awt.event.MouseAdapter;
  11.  import java.awt.event.MouseEvent;
  12.  import java.awt.event.MouseListener;
  13. -import java.util.ArrayList;
  14. -import java.util.Collections;
  15. -import java.util.Comparator;
  16. -import java.util.List;
  17.  import java.util.logging.Logger;
  18.  
  19.  import javax.swing.AbstractAction;
  20.  import javax.swing.Action;
  21. +import javax.swing.DefaultListModel;
  22.  import javax.swing.ImageIcon;
  23. +import javax.swing.JComboBox;
  24.  import javax.swing.JLabel;
  25.  import javax.swing.JList;
  26.  import javax.swing.JScrollPane;
  27.  import javax.swing.KeyStroke;
  28.  import javax.swing.event.ListSelectionEvent;
  29.  import javax.swing.event.ListSelectionListener;
  30. +import java.awt.event.ItemListener;
  31.  
  32.  import net.miginfocom.swing.MigLayout;
  33.  import net.sf.freecol.client.FreeColClient;
  34. @@ -57,22 +57,21 @@ import net.sf.freecol.common.model.StringTemplate;
  35.   * Centers the map on a known settlement or colony. Pressing ENTER
  36.   * opens a panel if appropriate.
  37.   */
  38. -public final class FindSettlementDialog<T> extends FreeColOldDialog<T> implements ListSelectionListener {
  39. +public final class FindSettlementDialog<T> extends FreeColOldDialog<T> implements ListSelectionListener, ItemListener {
  40.  
  41.      @SuppressWarnings("unused")
  42.      private static final Logger logger = Logger.getLogger(FindSettlementDialog.class.getName());
  43.  
  44. -    private static Comparator<Settlement> settlementComparator = new Comparator<Settlement>() {
  45. -        public int compare(Settlement s1, Settlement s2) {
  46. -            return s1.getName().compareTo(s2.getName());
  47. -        }
  48. -    };
  49. -
  50. -    private List<Settlement> knownSettlements = new ArrayList<Settlement>();
  51. +    private final JComboBox displayOptionBox;
  52.  
  53.      private JList settlementList;
  54.  
  55. -
  56. +    private static enum displayListOption {
  57. +        ALL,
  58. +        ONLY_NATIVES,
  59. +        ONLY_EUROPEAN
  60. +    }
  61. +    
  62.      /**
  63.       * The constructor to use.
  64.       */
  65. @@ -80,18 +79,13 @@ public final class FindSettlementDialog<T> extends FreeColOldDialog<T> implement
  66.      public FindSettlementDialog(FreeColClient freeColClient) {
  67.          super(freeColClient, new MigLayout("wrap 1", "[align center]",
  68.                                             "[]30[]30[]"));
  69. -
  70. -        for (Player player : getGame().getPlayers()) {
  71. -            knownSettlements.addAll(player.getSettlements());
  72. -        }
  73. -
  74. -        Collections.sort(knownSettlements, settlementComparator);
  75. -
  76. +        
  77.          JLabel header = new JLabel(Messages.message("findSettlementDialog.name"));
  78.          header.setFont(GUI.SMALL_HEADER_FONT);
  79.          add(header);
  80. -
  81. -        settlementList = new JList(knownSettlements.toArray(new Settlement[knownSettlements.size()]));
  82. +        
  83. +        settlementList = new JList();
  84. +        updateSearch(displayListOption.valueOf("ALL"));
  85.          settlementList.setCellRenderer(new SettlementRenderer());
  86.          settlementList.setFixedCellHeight(48);
  87.          JScrollPane listScroller = new JScrollPane(settlementList);
  88. @@ -126,11 +120,40 @@ public final class FindSettlementDialog<T> extends FreeColOldDialog<T> implement
  89.  
  90.          add(listScroller, "width max(300, 100%), height max(300, 100%)");
  91.  
  92. +        displayOptionBox = new JComboBox(new String[] {
  93. +                Messages.message("findSettlementDialog.displayAll"),
  94. +                Messages.message("findSettlementDialog.displayOnlyNatives"),
  95. +                Messages.message("findSettlementDialog.displayOnlyEuropean"),
  96. +            });
  97. +        displayOptionBox.addItemListener(this);
  98. +        add(displayOptionBox);
  99. +        
  100.          add(okButton, "tag ok");
  101. -
  102. +        
  103.          getGUI().restoreSavedSize(this, getPreferredSize());
  104.      }
  105.  
  106. +    private void updateSearch(displayListOption displayListOption) {
  107. +        DefaultListModel model = new DefaultListModel();
  108. +        Object selected = settlementList.getSelectedValue();
  109. +
  110. +        for (Player player : getGame().getPlayers()) {
  111. +            if ((player.isIndian() && displayListOption.equals(displayListOption.ONLY_NATIVES)) ||
  112. +                    (player.isEuropean() && displayListOption.equals(displayListOption.ONLY_EUROPEAN)) ||
  113. +                    (displayListOption.equals(displayListOption.ALL))) {
  114. +                for (Settlement s : player.getSettlements()) {
  115. +                    model.addElement(s);
  116. +                }
  117. +            }
  118. +        }
  119. +
  120. +        settlementList.setModel(model);
  121. +        settlementList.setSelectedValue(selected, true);
  122. +        if (settlementList.getSelectedIndex() == -1) {
  123. +            settlementList.setSelectedIndex(0);
  124. +        }
  125. +    }
  126. +    
  127.      private void selectSettlement() {
  128.          Settlement settlement = (Settlement) settlementList.getSelectedValue();
  129.          if (settlement instanceof Colony
  130. @@ -176,6 +199,19 @@ public final class FindSettlementDialog<T> extends FreeColOldDialog<T> implement
  131.          settlementList = null;
  132.      }
  133.  
  134. +    public void itemStateChanged(ItemEvent event) {
  135. +        switch(displayOptionBox.getSelectedIndex()) {
  136. +            case 0:
  137. +            default:
  138. +                updateSearch(displayListOption.valueOf("ALL"));
  139. +                break;
  140. +            case 1:
  141. +                updateSearch(displayListOption.valueOf("ONLY_NATIVES"));
  142. +                break;
  143. +            case 2:
  144. +                updateSearch(displayListOption.valueOf("ONLY_EUROPEAN"));
  145. +        }
  146. +    }
  147.  
  148.      private class SettlementRenderer extends FreeColComboBoxRenderer {
Add Comment
Please, Sign In to add comment