1 8 package com.nightlabs.editor2d.rulers; 9 10 import java.beans.PropertyChangeEvent ; 11 import java.beans.PropertyChangeListener ; 12 import java.util.ArrayList ; 13 import java.util.List ; 14 15 import org.eclipse.gef.commands.Command; 16 import org.eclipse.gef.rulers.RulerChangeListener; 17 import org.eclipse.gef.rulers.RulerProvider; 18 19 import com.nightlabs.editor2d.EditorGuide; 20 import com.nightlabs.editor2d.EditorRuler; 21 import com.nightlabs.editor2d.command.CreateGuideCommand; 22 import com.nightlabs.editor2d.command.DeleteGuideCommand; 23 import com.nightlabs.editor2d.command.MoveGuideCommand; 24 25 26 public class EditorRulerProvider 27 extends RulerProvider 28 { 29 private EditorRuler ruler; 30 private PropertyChangeListener rulerListener = new PropertyChangeListener () { 31 public void propertyChange(PropertyChangeEvent evt) { 32 if (evt.getPropertyName().equals(EditorRuler.PROPERTY_CHILDREN)) { 33 EditorGuide guide = (EditorGuide)evt.getNewValue(); 34 if (getGuides().contains(guide)) { 35 guide.addPropertyChangeListener(guideListener); 36 } else { 37 guide.removePropertyChangeListener(guideListener); 38 } 39 for (int i = 0; i < listeners.size(); i++) { 40 ((RulerChangeListener)listeners.get(i)) 41 .notifyGuideReparented(guide); 42 } 43 } else { 44 for (int i = 0; i < listeners.size(); i++) { 45 ((RulerChangeListener)listeners.get(i)) 46 .notifyUnitsChanged(ruler.getUnit()); 47 } 48 } 49 } 50 }; 51 private PropertyChangeListener guideListener = new PropertyChangeListener () { 52 public void propertyChange(PropertyChangeEvent evt) { 53 if (evt.getPropertyName().equals(EditorGuide.PROPERTY_CHILDREN)) { 54 for (int i = 0; i < listeners.size(); i++) { 55 ((RulerChangeListener)listeners.get(i)) 56 .notifyPartAttachmentChanged(evt.getNewValue(), evt.getSource()); 57 } 58 } else { 59 for (int i = 0; i < listeners.size(); i++) { 60 ((RulerChangeListener)listeners.get(i)) 61 .notifyGuideMoved(evt.getSource()); 62 } 63 } 64 } 65 }; 66 67 public EditorRulerProvider(EditorRuler ruler) { 68 this.ruler = ruler; 69 this.ruler.addPropertyChangeListener(rulerListener); 70 List guides = getGuides(); 71 for (int i = 0; i < guides.size(); i++) { 72 ((EditorGuide)guides.get(i)).addPropertyChangeListener(guideListener); 73 } 74 } 75 76 public List getAttachedModelObjects(Object guide) { 77 return new ArrayList (((EditorGuide)guide).getParts()); 78 } 79 80 public Command getCreateGuideCommand(int position) { 81 return new CreateGuideCommand(ruler, position); 82 } 83 84 public Command getDeleteGuideCommand(Object guide) { 85 return new DeleteGuideCommand((EditorGuide)guide, ruler); 86 } 87 88 public Command getMoveGuideCommand(Object guide, int pDelta) { 89 return new MoveGuideCommand((EditorGuide)guide, pDelta); 90 } 91 92 public int[] getGuidePositions() { 93 List guides = getGuides(); 94 int[] result = new int[guides.size()]; 95 for (int i = 0; i < guides.size(); i++) { 96 result[i] = ((EditorGuide)guides.get(i)).getPosition(); 97 } 98 return result; 99 } 100 101 public Object getRuler() { 102 return ruler; 103 } 104 105 public int getUnit() { 106 return ruler.getUnit(); 107 } 108 109 public void setUnit(int newUnit) { 110 ruler.setUnit(newUnit); 111 } 112 113 public int getGuidePosition(Object guide) { 114 return ((EditorGuide)guide).getPosition(); 115 } 116 117 public List getGuides() { 118 return ruler.getGuides(); 119 } 120 121 } 122
| Popular Tags
|