- Timestamp:
- 11/22/11 19:38:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/org.modelica.mdt.ui/src/org/modelica/mdt/ui/actions/CustomFiltersActionGroup.java
r1104 r1113 48 48 import java.util.StringTokenizer; 49 49 import java.util.TreeSet; 50 import java.util.Map.Entry;51 50 52 51 import org.eclipse.swt.SWT; … … 94 93 * @since 0.6.8 95 94 */ 96 @SuppressWarnings("unchecked")97 95 public class CustomFiltersActionGroup extends ActionGroup { 98 96 … … 184 182 185 183 private NamePatternFilter fPatternFilter; 186 private Map fInstalledBuiltInFilters;187 188 private Map /*<String, Boolean>*/fEnabledFilterIds;184 private Map<String, ViewerFilter> fInstalledBuiltInFilters; 185 186 private Map<String, Boolean> fEnabledFilterIds; 189 187 private boolean fUserDefinedPatternsEnabled; 190 188 private String[] fUserDefinedPatterns; … … 196 194 * @since 0.6.8 197 195 */ 198 private Stack fLRUFilterIdsStack;196 private Stack<String> fLRUFilterIdsStack; 199 197 /** 200 198 * Handle to menu manager to dynamically update … … 217 215 */ 218 216 private String[] fFilterIdsUsedInLastViewMenu; 219 private HashMapfFilterDescriptorMap;217 private Map<String, FilterDescriptor> fFilterDescriptorMap; 220 218 private String fTargetId; 221 219 … … 242 240 fViewer= viewer; 243 241 244 fLRUFilterIdsStack= new Stack ();242 fLRUFilterIdsStack= new Stack<String>(); 245 243 246 244 initializeWithPluginContributions(); … … 271 269 */ 272 270 public String[] internalGetEnabledFilterIds() { 273 Set enabledFilterIds= new HashSet(fEnabledFilterIds.size()); 274 Iterator iter= fEnabledFilterIds.entrySet().iterator(); 275 while (iter.hasNext()) { 276 Map.Entry entry= (Map.Entry)iter.next(); 277 String id= (String)entry.getKey(); 278 boolean isEnabled= ((Boolean)entry.getValue()).booleanValue(); 279 if (isEnabled) 271 Set<String> enabledFilterIds= new HashSet<String>(); 272 for (Map.Entry<String, Boolean> entry : fEnabledFilterIds.entrySet()) { 273 String id= entry.getKey(); 274 boolean isEnabled = entry.getValue(); 275 if (isEnabled) { 280 276 enabledFilterIds.add(id); 281 } 282 return (String[])enabledFilterIds.toArray(new String[enabledFilterIds.size()]); 277 } 278 } 279 String[] enabledFilterIdsArray = enabledFilterIds.toArray(new String[0]); 280 return enabledFilterIdsArray; 283 281 } 284 282 … … 295 293 public String[] removeFiltersFor(Object parent, Object element, IContentProvider contentProvider) { 296 294 String[] enabledFilters= internalGetEnabledFilterIds(); 297 Set newFilters= new HashSet(); 298 for (int i= 0; i < enabledFilters.length; i++) { 299 String filterName= enabledFilters[i]; 300 ViewerFilter filter= (ViewerFilter) fInstalledBuiltInFilters.get(filterName); 301 if (filter == null) 295 Set<String> newFilters= new HashSet<String>(); 296 for (String filterName : enabledFilters) { 297 ViewerFilter filter= fInstalledBuiltInFilters.get(filterName); 298 if (filter == null) { 302 299 newFilters.add(filterName); 303 else if (isSelected(parent, element, contentProvider, filter)) 300 } 301 else if (isSelected(parent, element, contentProvider, filter)) { 304 302 newFilters.add(filterName); 303 } 305 304 } 306 if (newFilters.size() == enabledFilters.length) 307 return new String[0]; 308 return (String[])newFilters.toArray(new String[newFilters.size()]); 305 306 String[] newFiltersArray = new String[0]; 307 308 if (newFilters.size() != enabledFilters.length) { 309 Assert.isTrue(newFilters.size() < enabledFilters.length); 310 newFiltersArray = newFilters.toArray(new String[0]); 311 } 312 313 return newFiltersArray; 309 314 } 310 315 … … 351 356 352 357 private void setEnabledFilterIds(String[] enabledIds) { 353 Iterator iter= fEnabledFilterIds.keySet().iterator();354 while (iter.hasNext()) {355 String id= (String)iter.next();356 fEnabledFilterIds.put(id, Boolean.FALSE);357 }358 for (int i= 0; i < enabledIds.length; i++)359 fEnabledFilterIds.put(enabledIds[i], Boolean.TRUE);358 for (String id : fEnabledFilterIds.keySet()) { 359 fEnabledFilterIds.put(id, false); 360 } 361 362 for (String id : enabledIds) { 363 fEnabledFilterIds.put(id, true); 364 } 360 365 } 361 366 … … 371 376 * @since 3.0 372 377 */ 373 private void setRecentlyChangedFilters(Stack changeHistory) {374 Stack oldestFirstStack= new Stack();378 private void setRecentlyChangedFilters(Stack<FilterDescriptor> changeHistory) { 379 Stack<String> oldestFirstStack= new Stack<String>(); 375 380 376 381 int length= Math.min(changeHistory.size(), MAX_FILTER_MENU_ENTRIES); 377 for (int i= 0; i < length; i++) 378 oldestFirstStack.push(((FilterDescriptor)changeHistory.pop()).getId()); 382 for (int i= 0; i < length; i++) { 383 FilterDescriptor filterDesc = changeHistory.pop(); 384 String id = filterDesc.getId(); 385 oldestFirstStack.push(id); 386 } 379 387 380 388 length= Math.min(fLRUFilterIdsStack.size(), MAX_FILTER_MENU_ENTRIES - oldestFirstStack.size()); 381 389 int NEWEST= 0; 382 390 for (int i= 0; i < length; i++) { 383 Objectfilter= fLRUFilterIdsStack.remove(NEWEST);384 if (!oldestFirstStack.contains(filter)) 391 String filter= fLRUFilterIdsStack.remove(NEWEST); 392 if (!oldestFirstStack.contains(filter)) { 385 393 oldestFirstStack.push(filter); 386 } 387 fLRUFilterIdsStack= oldestFirstStack; 394 } 395 } 396 fLRUFilterIdsStack = oldestFirstStack; 388 397 } 389 398 … … 439 448 } 440 449 441 SortedSet sortedFilters= new TreeSet(fLRUFilterIdsStack);450 SortedSet<String> sortedFilters= new TreeSet<String>(fLRUFilterIdsStack); 442 451 String[] recentlyChangedFilterIds= (String[])sortedFilters.toArray(new String[sortedFilters.size()]); 443 452 … … 466 475 467 476 private void initializeWithPluginContributions() { 468 fUserDefinedPatterns= new String[0]; 469 fUserDefinedPatternsEnabled= false; 470 471 FilterDescriptor[] filterDescs= getCachedFilterDescriptors(); 472 fFilterDescriptorMap= new HashMap(filterDescs.length); 473 fEnabledFilterIds= new HashMap(filterDescs.length); 474 for (int i= 0; i < filterDescs.length; i++) { 475 String id= filterDescs[i].getId(); 476 Boolean isEnabled= Boolean.valueOf(filterDescs[i].isEnabled()); 477 if (fEnabledFilterIds.containsKey(id)) 478 System.err.println("duplicateFilterId:"+id); 477 fUserDefinedPatterns = new String[0]; 478 fUserDefinedPatternsEnabled = false; 479 480 FilterDescriptor[] filterDescs = getCachedFilterDescriptors(); 481 fFilterDescriptorMap = new HashMap<String, FilterDescriptor>(); 482 fEnabledFilterIds = new HashMap<String, Boolean>(); 483 for (FilterDescriptor filterDesc : filterDescs) { 484 String id= filterDesc.getId(); 485 boolean isEnabled= filterDesc.isEnabled(); 486 if (fEnabledFilterIds.containsKey(id)) { 487 System.err.println("duplicateFilterId: " + id); 488 } 479 489 fEnabledFilterIds.put(id, isEnabled); 480 fFilterDescriptorMap.put(id, filterDesc s[i]);490 fFilterDescriptorMap.put(id, filterDesc); 481 491 } 482 492 } … … 485 495 486 496 private void installFilters() { 487 fInstalledBuiltInFilters= new HashMap (fEnabledFilterIds.size());497 fInstalledBuiltInFilters= new HashMap<String, ViewerFilter>(fEnabledFilterIds.size()); 488 498 fPatternFilter= new NamePatternFilter(); 489 499 fPatternFilter.setPatterns(getUserAndBuiltInPatterns()); … … 503 513 504 514 private void updateBuiltInFilters() { 505 Set installedFilters= fInstalledBuiltInFilters.keySet(); 506 Set filtersToAdd= new HashSet(fEnabledFilterIds.size()); 507 Set filtersToRemove= new HashSet(fEnabledFilterIds.size()); 508 Iterator iter= fEnabledFilterIds.entrySet().iterator(); 509 while (iter.hasNext()) { 510 Map.Entry entry= (Map.Entry)iter.next(); 511 String id= (String)entry.getKey(); 512 boolean isEnabled= ((Boolean)entry.getValue()).booleanValue(); 513 if (isEnabled && !installedFilters.contains(id)) 515 Set<String> installedFilters= fInstalledBuiltInFilters.keySet(); 516 Set<String> filtersToAdd= new HashSet<String>(); 517 Set<String> filtersToRemove= new HashSet<String>(); 518 for (Map.Entry<String, Boolean> entry : fEnabledFilterIds.entrySet()) { 519 String id = entry.getKey(); 520 boolean isEnabled = entry.getValue(); 521 if (isEnabled && !installedFilters.contains(id)) { 514 522 filtersToAdd.add(id); 515 else if (!isEnabled && installedFilters.contains(id)) 523 } 524 else if (!isEnabled && installedFilters.contains(id)) { 516 525 filtersToRemove.add(id); 526 } 517 527 } 518 528 519 529 // Install the filters 520 530 FilterDescriptor[] filterDescs= getCachedFilterDescriptors(); 521 for ( int i= 0; i < filterDescs.length; i++) {522 String id = filterDescs[i].getId();531 for (FilterDescriptor filterDesc : filterDescs) { 532 String id = filterDesc.getId(); 523 533 // just to double check - id should denote a custom filter anyway 524 boolean isCustomFilter = filterDescs[i].isCustomFilter();534 boolean isCustomFilter = filterDesc.isCustomFilter(); 525 535 if (isCustomFilter) { 526 536 if (filtersToAdd.contains(id)) { 527 ViewerFilter filter = filterDescs[i].createViewerFilter();537 ViewerFilter filter = filterDesc.createViewerFilter(); 528 538 if (filter != null) { 529 539 fViewer.addFilter(filter); … … 532 542 } 533 543 if (filtersToRemove.contains(id)) { 534 fViewer.removeFilter( (ViewerFilter)fInstalledBuiltInFilters.get(id));544 fViewer.removeFilter(fInstalledBuiltInFilters.get(id)); 535 545 fInstalledBuiltInFilters.remove(id); 536 546 } … … 540 550 541 551 private String[] getUserAndBuiltInPatterns() { 542 List patterns= new ArrayList(fUserDefinedPatterns.length);543 if (areUserDefinedPatternsEnabled()) 552 List<String> patterns= new ArrayList<String>(); 553 if (areUserDefinedPatternsEnabled()) { 544 554 patterns.addAll(Arrays.asList(fUserDefinedPatterns)); 555 } 545 556 FilterDescriptor[] filterDescs= getCachedFilterDescriptors(); 546 557 for (int i= 0; i < filterDescs.length; i++) { … … 560 571 setUserDefinedPatterns(CustomFiltersDialog.convertFromString("", SEPARATOR)); 561 572 562 Iterator iter= fEnabledFilterIds.entrySet().iterator(); 563 while (iter.hasNext()) 564 { 565 Entry entry= (Entry) iter.next(); 566 String id= (String) entry.getKey(); 573 for (String id : fEnabledFilterIds.keySet()) { 567 574 fEnabledFilterIds.put(id, true); 568 575 } … … 585 592 store.setValue(getPreferenceKey(TAG_USER_DEFINED_PATTERNS), CustomFiltersDialog.convertToString(fUserDefinedPatterns ,SEPARATOR)); 586 593 587 Iterator iter= fEnabledFilterIds.entrySet().iterator(); 594 for (Map.Entry<String, Boolean> entry : fEnabledFilterIds.entrySet()) { 595 String id = entry.getKey(); 596 boolean isEnabled = entry.getValue(); 597 store.setValue(id, isEnabled); 598 } 599 600 StringBuffer buf= new StringBuffer(fLRUFilterIdsStack.size() * 20); 601 602 Iterator<String> iter= fLRUFilterIdsStack.iterator(); 588 603 while (iter.hasNext()) { 589 Map.Entry entry= (Map.Entry)iter.next(); 590 String id= (String)entry.getKey(); 591 boolean isEnabled= ((Boolean)entry.getValue()).booleanValue(); 592 store.setValue(id, isEnabled); 593 } 594 595 StringBuffer buf= new StringBuffer(fLRUFilterIdsStack.size() * 20); 596 iter= fLRUFilterIdsStack.iterator(); 597 while (iter.hasNext()) { 598 buf.append((String)iter.next()); 604 buf.append(iter.next()); 599 605 buf.append(SEPARATOR); 600 606 } … … 624 630 if(fEnabledFilterIds != null && !fEnabledFilterIds.isEmpty()) { 625 631 IMemento xmlDefinedFilters= memento.createChild(TAG_XML_DEFINED_FILTERS); 626 Iterator iter= fEnabledFilterIds.entrySet().iterator(); 627 while (iter.hasNext()) { 628 Map.Entry entry= (Map.Entry)iter.next(); 629 String id= (String)entry.getKey(); 630 Boolean isEnabled= (Boolean)entry.getValue(); 632 for (Map.Entry<String, Boolean> entry : fEnabledFilterIds.entrySet()) { 633 String id = entry.getKey(); 634 Boolean isEnabled = entry.getValue(); 631 635 IMemento child= xmlDefinedFilters.createChild(TAG_CHILD); 632 636 child.putString(TAG_FILTER_ID, id); … … 645 649 if(fLRUFilterIdsStack != null && !fLRUFilterIdsStack.isEmpty()) { 646 650 IMemento lruFilters= memento.createChild(TAG_LRU_FILTERS); 647 Iterator iter= fLRUFilterIdsStack.iterator(); 648 while (iter.hasNext()) { 649 String id= (String)iter.next(); 651 for (String id : fLRUFilterIdsStack) { 650 652 IMemento child= lruFilters.createChild(TAG_CHILD); 651 653 child.putString(TAG_FILTER_ID, id); … … 731 733 if (!areUserDefinedPatternsEnabled()) 732 734 return; 733 List userDefinedPatterns= new ArrayList(Arrays.asList(fUserDefinedPatterns));735 List<String> userDefinedPatterns = Arrays.asList(fUserDefinedPatterns); 734 736 FilterDescriptor[] filters= getCachedFilterDescriptors(); 735 737
Note: See TracChangeset
for help on using the changeset viewer.