public ResourceSetWorkbenchSynchronizer createSynchronizer(ResourceSet aResourceSet, IProject aProject) { return new ResourceSetWorkbenchEditSynchronizer(aResourceSet, aProject); }
public void resourceChanged(IResourceChangeEvent event) { super.resourceChanged(event); try { acceptDelta(event); notifyExtendersIfNecessary(); processDeferredResources(); } catch (Exception e) { e.printStackTrace(); } finally { deferredRemoveResources.clear(); deferredUnloadResources.clear(); deferredLoadResources.clear(); } }
/** * Optimized not to be not interrested in files with an extension of .java or .class or if the * file has just been saved by our own internal mechanism. */ protected boolean isInterrestedInFile(IFile aFile) { String extension = aFile.getFileExtension(); if (CLASS_EXTENSION.equals(extension) || JAVA_EXTENSION.equals(extension)) return false; if (recentlySavedFiles.remove(aFile)) { cacheIgnored(aFile); return false; } return !hasIgnored(aFile); }
if (resource.getType() == IResource.PROJECT) { IProject p = (IProject) resource; if (isInterrestedInProject(p)) { currentProjectDelta = delta; return true; if (resource.getType() == IResource.FILE && isInterrestedInFile((IFile) resource)) { switch (delta.getKind()) { case IResourceDelta.REMOVED : removedResource((IFile) resource); break; case IResourceDelta.ADDED : addedResource((IFile) resource); break; case IResourceDelta.CHANGED : if ((delta.getFlags() & IResourceDelta.CONTENT) != 0) changedResource((IFile) resource); break; default : if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0 || (delta.getFlags() & IResourceDelta.MOVED_TO) != 0) movedResource((IFile) resource); break;
hasLocked = aquireLock(); } catch (InterruptedException e) { Logger.getLogger().write(e); primAcceptDelta(delta, event); releaseLock();
/** * The project is going away so we need to cleanup ourself and the ResourceSet. TODO Need to * push up this code to ResourceSetWorkbenchSynchronizer in next release. */ protected void release() { if (JEMUtilPlugin.isActivated()) { try { if (resourceSet instanceof ProjectResourceSet) ((ProjectResourceSet) resourceSet).release(); } finally { EMFWorkbenchContextFactory.INSTANCE.removeCachedProject(getProject()); dispose(); } } }
private void addKnownResources(IEnablementIdentifier id) { List editModelResources = getEditModelResources(id); EditModelResource editModelResource = null; ResourceSetWorkbenchEditSynchronizer sync = (ResourceSetWorkbenchEditSynchronizer) getResourceSetSynchronizer(); for (int i = 0; i < editModelResources.size(); i++) { editModelResource = (EditModelResource) editModelResources.get(i); if (editModelResource.isAutoLoad() && sync != null) { sync.enableAutoload(editModelResource.getURI()); preloadResourceUris.add(editModelResource.getURI()); getResource(editModelResource.getURI()); } knownResourceUris.add(editModelResource.getURI()); } }
protected void releasePreloadResources() { ResourceSetWorkbenchEditSynchronizer sync = (ResourceSetWorkbenchEditSynchronizer) getResourceSetSynchronizer(); if (sync != null) { for (int i = 0; i < preloadResourceUris.size(); i++) { URI uri = (URI) preloadResourceUris.get(i); sync.disableAutoload(uri); } for (int i = 0; i < knownResourceExtensions.size(); i++) { String ext = (String) knownResourceExtensions.get(i); sync.disableAutoload(ext); } } }
private void releaseLock() { getLock().release(); } private boolean aquireLock() throws InterruptedException{
/** * Subclasses should override and add URIs (type URI) of known resources. You must add resources * that have references to other known resources first so they will be released first. */ protected void initializeKnownResourceUris() { knownResourceUris = new ArrayList(); preloadResourceUris = new ArrayList(); EditModelResource res = null; Collection editModelResources = EditModelRegistry.getInstance().getEditModelResources(getEditModelID()); Iterator iter = editModelResources.iterator(); while (iter.hasNext()) { res = (EditModelResource) iter.next(); addEditModelResource(res); } Collection resourceExtensions = EditModelRegistry.getInstance().getEditModelExtensions(getEditModelID()); /* bug 170690 - initialize knownResourceExtensions if necessary, and change reference from iter to it */ if (knownResourceExtensions == null) { knownResourceExtensions = new ArrayList(); } if (!resourceExtensions.isEmpty()) { knownResourceExtensions.addAll(resourceExtensions); Iterator it = resourceExtensions.iterator(); ResourceSetWorkbenchEditSynchronizer sync = (ResourceSetWorkbenchEditSynchronizer) getEmfContext().getResourceSet().getSynchronizer(); while (it.hasNext()) { sync.enableAutoload(it.next().toString()); } } }
private void removeKnownResources(IEnablementIdentifier id) { List editModelResources = getEditModelResources(id); EditModelResource editModelResource = null; ResourceSetWorkbenchEditSynchronizer sync = (ResourceSetWorkbenchEditSynchronizer) getResourceSetSynchronizer(); for (int i = 0; i < editModelResources.size(); i++) { editModelResource = (EditModelResource) editModelResources.get(i); if (editModelResource.isAutoLoad() && sync != null) { sync.disableAutoload(editModelResource.getURI()); preloadResourceUris.remove(editModelResource.getURI()); } knownResourceUris.remove(editModelResource.getURI()); removeResource(editModelResource.getURI()); } }
private boolean aquireLock() throws InterruptedException{ return getLock().acquire(delay); }
private void addEditModelResource(EditModelResource res) { boolean enabled = false; try { if (res.isCore()) { enabled = true; } else { IEnablementIdentifier identifier = res.getEnablementIdentifier(getProject()); registerInterest(identifier, res); enabled = identifier.isEnabled(); } } catch (RuntimeException re) { Logger.getLogger().logWarning(re); } if (enabled) { URI uri = res.getURI(); knownResourceUris.add(uri); if (res.isAutoLoad()) { ResourceSetWorkbenchEditSynchronizer sync = (ResourceSetWorkbenchEditSynchronizer) getEmfContext().getResourceSet().getSynchronizer(); sync.enableAutoload(uri); preloadResourceUris.add(uri); } } }