| 1 package org.antlr.works.tips; 2 3 import java.awt.*; 4 import java.util.ArrayList ; 5 import java.util.Iterator ; 6 import java.util.List ; 7 37 38 public class TipsManager { 39 40 protected List <TipsProvider> providers; 41 protected TipsOverlay overlay; 42 protected int lastPosition; 43 protected boolean enabled; 44 45 public TipsManager() { 46 providers = new ArrayList <TipsProvider>(); 47 enabled = true; 48 } 49 50 public void setOverlay(TipsOverlay overlay) { 51 this.overlay = overlay; 52 } 53 54 public void addProvider(TipsProvider provider) { 55 providers.add(provider); 56 } 57 58 public void setEnabled(boolean flag) { 59 this.enabled = flag; 60 if(!enabled) 61 hide(); 62 } 63 64 public boolean enabled() { 65 return enabled; 66 } 67 68 public void displayAnyTipsAvailable(int position, Point location) { 69 if(!enabled) 70 return; 71 72 if(location == null) { 73 hide(); 74 return; 75 } 76 77 if(position == lastPosition) 78 return; 79 80 lastPosition = position; 81 82 List <String > tips = generateTips(position); 83 if(tips == null || tips.isEmpty()) { 84 hide(); 85 } else { 86 overlay.setTips(tips); 87 overlay.setLocation(location); 88 overlay.display(); 89 } 90 } 91 92 public void hide() { 93 overlay.hide(); 94 lastPosition = -1; 95 } 96 97 public List <String > generateTips(int position) { 98 List <String > tips = new ArrayList <String >(); 99 for(Iterator <TipsProvider> iter = providers.iterator(); iter.hasNext(); ) { 100 TipsProvider provider = iter.next(); 101 List <String > ptips = provider.tipsProviderGetTips(position); 102 if(ptips != null && !ptips.isEmpty()) { 103 tips.addAll(ptips); 104 } 105 } 106 return tips; 107 } 108 109 } 110 | Popular Tags |