1 11 package org.eclipse.help.ui.internal.workingset; 12 13 import java.util.*; 14 15 import org.eclipse.core.runtime.*; 16 import org.eclipse.help.internal.base.*; 17 import org.eclipse.help.internal.workingset.*; 18 import org.eclipse.jface.util.*; 19 import org.eclipse.ui.*; 20 21 25 public class HelpWorkingSetSynchronizer 26 implements 27 IPropertyChangeListener, 28 PropertyChange.IPropertyChangeListener { 29 30 private ArrayList workingSets; 31 32 35 public HelpWorkingSetSynchronizer() { 36 workingSets = new ArrayList(); 37 } 38 41 public void propertyChange(PropertyChangeEvent event) { 42 if (event.getProperty().equals( 43 IWorkingSetManager.CHANGE_WORKING_SET_ADD)) { 44 45 IWorkingSet iws = (IWorkingSet) event.getNewValue(); 47 addWorkingSet(iws); 48 } else if (event.getProperty().equals( 49 IWorkingSetManager.CHANGE_WORKING_SET_REMOVE)) { 50 51 IWorkingSet iws = (IWorkingSet) event.getOldValue(); 53 removeWorkingSet(iws); 54 } else if (event.getProperty().equals( 55 IWorkingSetManager.CHANGE_WORKING_SET_NAME_CHANGE)) { 56 57 IWorkingSet iws = (IWorkingSet) event.getNewValue(); 59 renameWorkingSet(iws); 60 } else if (event.getProperty().equals( 61 IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)) { 62 63 IWorkingSet iws = (IWorkingSet) event.getNewValue(); 65 changeWorkingSet(iws); 66 } 67 } 68 69 72 public void propertyChange(PropertyChange.PropertyChangeEvent event) { 73 if (event.getProperty() 74 .equals(WorkingSetManager.CHANGE_WORKING_SET_ADD)) { 75 76 WorkingSet ws = (WorkingSet) event.getNewValue(); 78 addWorkingSet(ws); 79 } else if (event.getProperty().equals( 80 WorkingSetManager.CHANGE_WORKING_SET_REMOVE)) { 81 82 WorkingSet ws = (WorkingSet) event.getOldValue(); 84 removeWorkingSet(ws); 85 } else if (event.getProperty().equals( 86 WorkingSetManager.CHANGE_WORKING_SET_NAME_CHANGE)) { 87 88 WorkingSet ws = (WorkingSet) event.getNewValue(); 90 renameWorkingSet(ws); 91 } else if (event.getProperty().equals( 92 WorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)) { 93 94 WorkingSet ws = (WorkingSet) event.getNewValue(); 96 changeWorkingSet(ws); 97 } else if (event.getProperty().equals( 98 WorkingSetManager.CHANGE_WORKING_SETS_SYNCH)) { 99 100 WorkingSet[] baseWorkingSets = getHelpWorkingSetManager() 102 .getWorkingSets(); 103 for (int i = 0; i < baseWorkingSets.length; i++) { 104 IWorkingSet iws = getEclipseWorkingSetManager().getWorkingSet( 105 baseWorkingSets[i].getName()); 106 if (iws == null) 107 getHelpWorkingSetManager().removeWorkingSet( 108 baseWorkingSets[i]); 109 } 110 } 111 } 112 113 public void renameWorkingSet(IWorkingSet iws) { 114 HelpWorkingSet hws = findWorkingSet(iws); 115 if (hws != null) { 116 hws.getWorkingSet().setName(iws.getName()); 117 } 118 } 119 public void changeWorkingSet(IWorkingSet iws) { 120 HelpWorkingSet hws = findWorkingSet(iws); 121 if (hws != null) { 122 AdaptableHelpResource[] elements = new AdaptableHelpResource[iws 123 .getElements().length]; 124 System 125 .arraycopy(iws.getElements(), 0, elements, 0, 126 elements.length); 127 hws.getWorkingSet().setElements(elements); 128 } 129 } 130 131 public void addWorkingSet(IWorkingSet iws) { 132 WorkingSet ws = getHelpWorkingSetManager().getWorkingSet(iws.getName()); 133 if (ws == null && isHelpWorkingSet(iws)) { 134 HelpWorkingSet hws = new HelpWorkingSet(iws); 135 workingSets.add(hws); 136 getHelpWorkingSetManager().addWorkingSet(hws.getWorkingSet()); 137 } 138 if (ws != null && findWorkingSet(iws) == null) { 140 HelpWorkingSet hws = new HelpWorkingSet(ws, iws); 141 workingSets.add(hws); 142 iws.setElements(ws.getElements()); 143 } 144 } 145 public void removeWorkingSet(IWorkingSet iws) { 146 WorkingSet ws = getHelpWorkingSetManager().getWorkingSet(iws.getName()); 147 if (ws != null) { 148 HelpWorkingSet hws = findWorkingSet(iws); 149 if (hws != null) 150 workingSets.remove(hws); 151 getHelpWorkingSetManager().removeWorkingSet(ws); 152 } 153 } 154 155 public void renameWorkingSet(WorkingSet ws) { 156 HelpWorkingSet hws = findWorkingSet(ws); 157 if (hws != null) { 158 hws.getIWorkingSet().setName(ws.getName()); 159 } 160 } 161 public void changeWorkingSet(WorkingSet ws) { 162 HelpWorkingSet hws = findWorkingSet(ws); 163 if (hws != null) { 164 hws.getIWorkingSet().setElements(ws.getElements()); 165 } 166 } 167 public void removeWorkingSet(WorkingSet ws) { 168 IWorkingSet iws = getEclipseWorkingSetManager().getWorkingSet( 169 ws.getName()); 170 if (iws != null) { 171 HelpWorkingSet hws = findWorkingSet(ws); 172 if (hws != null) 173 workingSets.remove(hws); 174 getEclipseWorkingSetManager().removeWorkingSet(iws); 175 } 176 } 177 public void addWorkingSet(WorkingSet ws) { 178 IWorkingSet iws = getEclipseWorkingSetManager().getWorkingSet( 179 ws.getName()); 180 if (iws == null) { 181 HelpWorkingSet hws = new HelpWorkingSet(ws); 182 workingSets.add(hws); 183 getEclipseWorkingSetManager().addWorkingSet(hws.getIWorkingSet()); 184 } else if (findWorkingSet(ws) == null) { 185 HelpWorkingSet hws = new HelpWorkingSet(ws, iws); 186 workingSets.add(hws); 187 } 188 } 189 190 private boolean isHelpWorkingSet(IWorkingSet ws) { 191 IAdaptable[] elements = ws.getElements(); 192 return (elements.length > 0 && elements[0] instanceof AdaptableHelpResource); 193 } 194 195 private HelpWorkingSet findWorkingSet(WorkingSet ws) { 196 for (Iterator it = workingSets.iterator(); it.hasNext();) { 197 HelpWorkingSet hws = (HelpWorkingSet) it.next(); 198 if (hws.getWorkingSet() == ws) 199 return hws; 200 } 201 return null; 202 } 203 204 private HelpWorkingSet findWorkingSet(IWorkingSet iws) { 205 for (Iterator it = workingSets.iterator(); it.hasNext();) { 206 HelpWorkingSet hws = (HelpWorkingSet) it.next(); 207 if (hws.getIWorkingSet() == iws) 208 return hws; 209 } 210 return null; 211 } 212 213 private IWorkingSetManager getEclipseWorkingSetManager() { 214 return PlatformUI.getWorkbench().getWorkingSetManager(); 215 } 216 217 private WorkingSetManager getHelpWorkingSetManager() { 218 return BaseHelpSystem.getWorkingSetManager(); 219 } 220 } 221 | Popular Tags |