private synchronized Map<String, Ref> getRefs(final Repository repo, final String prefix) throws IOException { Map<String, Ref> allRefs = branchRefs.get(repo); if (allRefs == null) { allRefs = repo.getRefDatabase().getRefs(RefDatabase.ALL); branchRefs.put(repo, allRefs); if (refsChangedListeners.get(repo) == null) { RefsChangedListener listener = new RefsChangedListener() { public void onRefsChanged(RefsChangedEvent event) { synchronized (RepositoriesViewContentProvider.this) { branchRefs.remove(repo); } } }; refsChangedListeners.put(repo, repo.getListenerList() .addRefsChangedListener(listener)); } } if (prefix.equals(RefDatabase.ALL)) return allRefs; Map<String, Ref> filtered = new HashMap<String, Ref>(); for (Map.Entry<String, Ref> entry : allRefs.entrySet()) { if (entry.getKey().startsWith(prefix)) filtered.put(entry.getKey(), entry.getValue()); } return filtered; }
@Override public void setInput(final Object input) { // right-clicking on a commit will fire selection change events, // so we only rebuild this when the commit did in fact change if (input == commit) return; currentDiffs.clear(); commit = (PlotCommit<?>) input; allRefs = getBranches(); if (refsChangedListener != null) refsChangedListener.remove(); refsChangedListener = db.getListenerList().addRefsChangedListener(new RefsChangedListener() { public void onRefsChanged(RefsChangedEvent event) { allRefs = getBranches(); } }); format(); }
private void initRepositoriesAndListeners() { synchronized (repositories) { repositories.clear(); unregisterRepositoryListener(); // listen for repository changes for (String dir : repositoryUtil.getConfiguredRepositories()) { File repoDir = new File(dir); try { Repository repo = repositoryCache.lookupRepository(repoDir); myListeners.add(repo.getListenerList() .addIndexChangedListener(myIndexChangedListener)); myListeners.add(repo.getListenerList() .addRefsChangedListener(myRefsChangedListener)); myListeners.add(repo.getListenerList() .addConfigChangedListener(myConfigChangeListener)); repositories.add(repo); } catch (IOException e) { String message = NLS .bind(UIText.RepositoriesView_ExceptionLookingUpRepoMessage, repoDir.getPath()); Activator.handleError(message, e, false); repositoryUtil.removeDir(repoDir); } } } }
static GitDocument create(final IResource resource) throws IOException { if (GitTraceLocation.QUICKDIFF.isActive()) GitTraceLocation.getTrace().trace( GitTraceLocation.QUICKDIFF.getLocation(), "(GitDocument) create: " + resource); //$NON-NLS-1$ GitDocument ret = null; if (RepositoryProvider.getProvider(resource.getProject()) instanceof GitProvider) { ret = new GitDocument(resource); ret.populate(); final Repository repository = ret.getRepository(); if (repository != null) ret.myRefsChangedHandle = repository.getListenerList() .addRefsChangedListener(ret); } return ret; }
/** * @see org.eclipse.ui.forms.editor.FormEditor#addPages() */ protected void addPages() { try { commitPage = new CommitEditorPage(this); addPage(commitPage); if (getCommit().getRevCommit().getParentCount() <= 1) { diffPage = new DiffEditorPage(this); addPage(diffPage); } if (getCommit().getNotes().length > 0) { notePage = new NotesEditorPage(this); addPage(notePage); } } catch (PartInitException e) { Activator.error("Error adding page", e); //$NON-NLS-1$ } refListenerHandle = Repository.getGlobalListenerList() .addRefsChangedListener(this); }