Changeset 36253 for main/trunk
- Timestamp:
- 2022-06-13T16:30:44+12:00 (23 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/gli/src/org/greenstone/gatherer/cdm/SortFieldManager.java
r36172 r36253 25 25 package org.greenstone.gatherer.cdm; 26 26 27 import java.awt.*; 28 import java.awt.event.*; 29 import java.util.*; 30 import javax.swing.*; 31 32 import org.greenstone.gatherer.Dictionary; 27 33 import org.greenstone.gatherer.util.StaticStrings; 28 34 import org.w3c.dom.*; … … 30 36 /** handles sortfields for lucene and solr collections */ 31 37 public class SortFieldManager extends BaseIndexManager { 38 39 static final private String NONE = "none"; 40 static final private String RANK = "rank"; 32 41 33 42 public SortFieldManager(Element sortfields, String current_build_type) { … … 48 57 this.nip_replace_index_button_key = "CDM.SortFieldManager.Replace"; 49 58 this.nip_replace_index_tooltip_key = "CDM.SortFieldManager.Replace_Tooltip"; 59 this.nip_add_all_index_button_key = "CDM.IndexManager.AddAll"; 60 this.nip_add_all_index_tooltip_key = "CDM.SortFieldManager.AddAll_Tooltip"; 61 50 62 } 51 63 … … 60 72 } 61 73 74 public Control getControls() { 75 if (controls == null) { 76 controls = new SortFieldControl(); 77 } 78 return controls; 79 } 80 81 private class SortFieldControl 82 extends IndexControl { 83 84 public SortFieldControl() { 85 super(); 86 } 87 88 /** we want our own custom new index prompt for searhc indexes */ 89 protected NewIndexPrompt createNewIndexPrompt(String build_type, Index index) { 90 return new NewSortFieldPrompt(build_type, index); 91 92 } 93 94 // we extend this to add in the rank/none options 95 protected class NewSortFieldPrompt 96 extends NewIndexPrompt { 97 98 private JCheckBox none_checkbox; 99 private JCheckBox rank_checkbox; 100 101 public NewSortFieldPrompt(String build_type, Index existing_index) { 102 super(build_type, existing_index); 103 } 104 105 /** inside here is where we customise our controls */ 106 protected void generateContents(String build_type, Index existing_index) { 107 super.generateContents(build_type, existing_index); 108 none_checkbox = new JCheckBox(Dictionary.get("CDM.SortFieldManager.Field_None")); 109 none_checkbox.addItemListener(new NoneRankBoxListener()); 110 none_checkbox.setComponentOrientation(Dictionary.getOrientation()); 111 none_checkbox.setToolTipText(Dictionary.get("CDM.SortFieldManager.Field_None_Tooltip")); 112 113 rank_checkbox = new JCheckBox(Dictionary.get("CDM.SortFieldManager.Field_Rank")); 114 rank_checkbox.addItemListener(new NoneRankBoxListener()); 115 rank_checkbox.setComponentOrientation(Dictionary.getOrientation()); 116 rank_checkbox.setToolTipText(Dictionary.get("CDM.SortFieldManager.Field_Rank_Tooltip")); 117 118 // fill in none/rank if it is selected in existing index 119 if (existing_index !=null) { 120 ArrayList sources = existing_index.getSources(); 121 if (sources.contains(NONE)) { 122 none_checkbox.setSelected(true); 123 rank_checkbox.setEnabled(false); 124 source_list.setEnabled(false); 125 } else if (sources.contains(RANK)) { 126 rank_checkbox.setSelected(true); 127 none_checkbox.setEnabled(false); 128 source_list.setEnabled(false); 129 } 130 131 } 132 133 134 JPanel extra_options_panel = new JPanel(); 135 extra_options_panel.setComponentOrientation(Dictionary.getOrientation()); 136 extra_options_panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 137 138 extra_options_panel.setLayout(new GridLayout(2,1,5,5));//** 139 extra_options_panel.add(none_checkbox); 140 extra_options_panel.add(rank_checkbox); 141 details_pane.add(extra_options_panel, BorderLayout.NORTH); 142 143 } 144 145 // override this to take into account none/rank options 146 protected Index generateNewIndex() { 147 ArrayList sources; 148 149 if (none_checkbox.isSelected()) { 150 sources = new ArrayList(); 151 sources.add(NONE); 152 } else if (rank_checkbox.isSelected()) { 153 sources = new ArrayList(); 154 sources.add(RANK); 155 } else if (!source_list.isNothingTicked()) { 156 sources = source_list.getTicked(); 157 } else { 158 // nothing selected 159 return null; 160 } 161 return new SortField(sources); 162 163 } 164 165 166 private class NoneRankBoxListener 167 implements ItemListener { 168 169 public void itemStateChanged(ItemEvent event) { 170 171 if (none_checkbox.isSelected() ) { 172 source_list.setEnabled(false); 173 rank_checkbox.setEnabled(false); 174 } else if (rank_checkbox.isSelected()) { 175 source_list.setEnabled(false); 176 none_checkbox.setEnabled(false); 177 } else { 178 // neither button is selected 179 none_checkbox.setEnabled(true); 180 rank_checkbox.setEnabled(true); 181 source_list.setEnabled(true); 182 } 183 validateAddOrReplaceButton(); 184 } 185 186 } 187 } 188 189 } 62 190 }
Note:
See TracChangeset
for help on using the changeset viewer.